【问题标题】:What does expect() do in rspec/cucumber?expect() 在 rspec/cucumber 中做了什么?
【发布时间】:2013-11-18 00:55:02
【问题描述】:

在 Michael Hartl 的 Rails Tutorial 中,许多示例使用 expect() 方法。这是黄瓜步骤定义中的一个这样的示例:

Then /^she should see her profile page$/ do
  expect(page).to have_title(@user.name)
end

同样的例子可以写成同样的效果:

Then /^she should see her profile page$/ do
  page.should have_title(@user.name)
end

为什么使用expect()?它增加了什么价值?

【问题讨论】:

标签: ruby-on-rails ruby testing rspec cucumber


【解决方案1】:

rspec-expectations gem 上有一个关于此的文档。 Why switch over from should to expect 基本上:

应该和不应该通过添加到每个对象来工作。但是,RSpec 并不拥有每个对象,也不能确保它们在每个对象上都一致地工作。特别是,当与 BasicObject 子类代理对象一起使用时,它们可能会导致令人惊讶的失败。 expect 不需要在所有对象上都可用,从而完全避免了这些问题。

更详细的原因放在:RSpec's New Expectation Syntax

【讨论】:

    【解决方案2】:

    expect 更通用一点。您正在将对象或块传递给 rspec 的 expect 方法,而不是尝试在您无法控制的对象上调用 should 方法。因此,expect 越来越受到开发者的青睐。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2012-07-30
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 2014-08-03
      • 2012-02-12
      • 2010-10-26
      相关资源
      最近更新 更多