RSpec - 简介
RSpec 是 Ruby 编程语言的单元测试框架。 RSpec 与 JUnit 等传统 xUnit 框架不同,因为 RSpec 是行为驱动的开发工具。 这意味着,用 RSpec 编写的测试重点关注正在测试的应用程序的"行为"。 RSpec 并不强调应用程序如何工作,而是强调它的行为方式,换句话说,应用程序实际执行的操作。
RSpec 官网下载安装和环境设置
首先,您需要在计算机上安装 Ruby。 但是,如果您之前还没有这样做,那么您可以从主 Ruby 网站下载并安装 Ruby − 官网下载 Ruby。
如果您要在 Windows 上安装 Ruby,您应该在此处获得适用于 Windows 的 Ruby 安装程序 − http://www.rubyinstaller.org
对于本教程,您只需要文本编辑器,例如记事本和命令行控制台。 此处的示例将在 Windows 上使用 cmd.exe。
要运行 cmd.exe,只需单击"开始"菜单并键入"cmd.exe",然后按 Return 键即可。
在 cmd.exe 窗口的命令提示符处,键入以下命令以查看您正在使用的 Ruby 版本 −
ruby -v
您应该看到与此类似的以下输出 −
ruby 2.2.3p173 (2015-08-18 revision 51636) [x64-mingw32]
本教程中的示例将使用 Ruby 2.2.3,但任何高于 2.0.0 的 Ruby 版本都可以。 接下来,我们需要为您的 Ruby 安装安装 RSpec gem。 gem 是一个 Ruby 库,您可以在自己的代码中使用它。 为了安装 gem,您需要使用 gem 命令。
现在让我们安装 Rspec gem。 返回 cmd.exe 窗口并输入以下内容 −
gem install rspec
您应该有一个已安装的依赖 gem 的列表,这些是 rspec gem 正常运行所需的 gem。 在输出的末尾,您应该看到类似这样的内容 −
Done installing documentation for diff-lcs, rspec-support, rspec-mocks, rspec-expectations, rspec-core, rspec after 22 seconds 6 gems installed
如果您的输出看起来不完全相同,请不要担心。 另外,如果您使用的是 Mac 或 Linux 计算机,您可能需要使用 sudo 运行 gem install rspec 命令或使用 HomeBrew 或 RVM 等工具来安装 rspec gem。
Hello World
首先,让我们创建一个目录(文件夹)来存储 RSpec 文件。 在 cmd.exe 窗口中,键入以下内容 −
cd \
然后输入 −
mkdir rspec_tutorial
最后,输入 −
cd rspec_tutorial
从这里,我们将创建另一个名为spec的目录,通过输入 −
mkdir spec
我们将把 RSpec 文件存储在此文件夹中。 RSpec 文件被称为"specs"。 如果这让您感到困惑,您可以将spec 文件视为测试文件。 RSpec 使用术语"spec",它是"规范"的缩写。
由于 RSpec 是一个 BDD 测试工具,因此目标是关注应用程序的功能以及它是否遵循规范。 在行为驱动开发中,规范通常用"用户故事"来描述。 RSpec 旨在明确目标代码是否行为正确,换句话说,是否遵循规范。
让我们回到 Hello World 代码。 打开文本编辑器并添加以下代码 −
class HelloWorld def say_hello "Hello World!" end end describe HelloWorld do context “When testing the HelloWorld class” do it "should say 'Hello World' when we call the say_hello method" do hw = HelloWorld.new message = hw.say_hello expect(message).to eq "Hello World!" end end end
接下来,将其保存到您上面创建的 spec 文件夹中名为 hello_world_spec.rb 的文件中。 现在回到 cmd.exe 窗口,运行此命令 −
rspec spec spec\hello_world_spec.rb
命令完成后,您应该看到如下所示的输出 −
Finished in 0.002 seconds (files took 0.11101 seconds to load) 1 example, 0 failures
恭喜,您刚刚创建并运行了第一个 RSpec 单元测试!
在下一节中,我们将继续讨论 RSpec 文件的语法。