📜  RSpec-期望

📅  最后修改于: 2020-12-06 10:58:49             🧑  作者: Mango


学习RSpec时,您可能会读到很多关于期望的内容,起初可能会有些混乱。当您看到“期望”一词时,应牢记两个主要细节-

  • Expectation只是it块中使用Expect()方法的一条语句。而已。没有比这更复杂的了。当您具有如下代码: Expect(1 + 1).to eq(2)时,示例中将具有Expectation。您期望表达式1 +1等于2 。但是,由于RSpec是BDD测试框架,因此措辞很重要。通过将此语句称为Expectation,很明显,您的RSpec代码正在描述所测试代码的“行为”。想法是您以一种类似于文档的方式表达代码的行为方式。

  • Expectation语法是相对较新的。在引入Expect ()方法之前(早在2012年),RSpec使用基于should()方法的另一种语法。上面的Expectation用旧语法写成这样: (1 +1)。应该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 '.

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()。