Pet*_*vin 57

虽然可以使用具有新期望语法的shoulda-matchers,如下所示:

it 'should validate presence of :email' do
  expect(subject).to validate_presence_of :email
end
Run Code Online (Sandbox Code Playgroud)

或者更简洁但更不易读:

it { expect(subject).to validate_presence_of :email }
Run Code Online (Sandbox Code Playgroud)

should这些匹配器通常使用的单行格式在2.14中明确支持,即使这样config.syntax == :expect.何时should与隐式主题一起使用,如:

describe User
  it { should validate_presence_of :email }
end
Run Code Online (Sandbox Code Playgroud)

它不依赖猴子修补Kernel,should否则取决于.

这将在https://github.com/rspec/rspec-expectations/blob/master/Should.md中介绍.实际上,该文档甚至使用上面的shoulda匹配器示例来说明此异常.

另请参阅在RSpec-2.11中使用带有`expect`的隐式`subject`,它讨论了一个配置选项,它允许您使用它作为替代it.

expect_it { to validate_presence_of :email }
Run Code Online (Sandbox Code Playgroud)

更新:从RSpec 3.0(beta2)开始,您还可以使用:

it { is_expected.to validate_presence_of :email }
Run Code Online (Sandbox Code Playgroud)