RSpec – 期望

RSpec – 期望


当您学习 RSpec 时,您可能会阅读很多关于期望的内容,一开始可能会有些混乱。当您看到“期望”一词时,您应该记住两个主要细节 –

  • Expectation 只是使用expect()方法it 块中的一个语句就是这样。没有比这更复杂的了。当你有这样的代码时:expect(1 + 1).to eq(2),你的例子中有一个 Expectation 。您期望表达式1 + 1 的计算结果为2措辞很重要,因为 RSpec 是一个 BDD 测试框架。通过将此声明称为期望,很明显您的 RSpec 代码正在描述它正在测试的代码的“行为”。这个想法是你在表达代码应该如何表现,以一种读起来像文档的方式。

  • Expectation 语法相对较新。引入expect()方法之前(早在 2012 年),RSpec 使用了一种基于should()方法的不同语法上面的 Expectation 在旧语法中是这样写的:(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()。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁