在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()
?它增加了什么价值?
答案 0 :(得分:8)
这里有关于rspec-expectations gem的文档。 Why switch over from should to expect基本上:
应该和不应该通过添加到每个对象来工作。但是,RSpec并不拥有每个对象,也无法确保它们在每个对象上都能保持一致。特别是,与BasicObject-subclassed代理对象一起使用时,它们可能会导致意外失败。 期望通过不需要在所有对象上可用来完全避免这些问题。
更详细的原因放在:RSpec's New Expectation Syntax
答案 1 :(得分:3)
expect
更具普遍性。您正在将对象或块传递给rspec的expect
方法,而不是尝试在对象之外的对象上调用should
方法。因此,expect
越来越受到开发人员的青睐。