RSpec - 预期



在你学习RSpec时,你可能会读到很多关于预期的内容,一开始可能会有一些困惑。当你看到术语预期时,你应当牢记两个要点 -

  • 预期只是一种包含在it块中的声明,使用expect()方法。就是这样。一点也不复杂。当你拥有如下代码时:expect(1 + 1).to eq(2),你的示例中就会包含一个预期。你预期表达式1 + 1评估结果为2。但是措辞很重要,因为RSpec是一个BDD测试框架。通过将此语句称为预期,可以清楚地看出你的RSpec代码正在描述它正在测试的代码的“行为”。其思想是你以一种类似文档的方式表达代码应该如何表现的行为。

  • 期望语法相对较新。在引入expect()方法之前 (2012年),RSpec使用了基于should()方法的不同语法。在旧语法中,上述预期写成如下:(1 + 1).should eq(2)

使用旧版本的RSpec或基于旧代码时,你可能遇到旧的RSpec语法。如果你将旧语法与新版本的RSpec一起使用,则将看到警告。

例如,使用以下代码 -

RSpec.describe "An RSpec file that uses the old syntax" do
   it 'you should see a warning when you run this Example' do 
      (1 + 1).should eq(2) 
   end 
end

运行时,你将获得如下所示的输出 -

. Deprecation Warnings:

Using `should` from rspec-expectations' old `:should` 
   syntax without explicitly enabling the syntax is deprecated. 
   Use the new `:expect` syntax or explicitly enable 
	
`:should` with `config.expect_with( :rspec) { |c| c.syntax = :should }`
   instead. Called from C:/rspec_tutorial/spec/old_expectation.rb:3 :in 
   `block (2 levels) in <top (required)>'.

If you need more of the backtrace for any of these deprecations to
   identify where to make the necessary changes, you can configure 
`config.raise_errors_for_deprecations!`, and it will turn the deprecation 
   warnings into errors, giving you the full backtrace.

1 deprecation warning total 
Finished in 0.001 seconds (files took 0.11201 seconds to load) 
1 example, 0 failures

除非必需使用旧语法,强烈建议你使用expect()而不是should()。

广告