哪个Rspec约定更新,应该在新项目中使用?
subject { [] }
it { should == [] }
或
subject { [] }
it { expect(subject).to eq([]) }
我没有找到使用expect
方法隐式使用主题编写较短版本的方法。
答案 0 :(得分:2)
使用expect
(您的第二个示例)是更新的版本。 Rspec正在逐渐远离被添加到现有对象(例如should
)的方法,因为它们偶尔会导致奇怪的行为。
答案 1 :(得分:2)
如http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
中所述“将来,我们计划更改默认值,以便除非您明确启用,否则只有预期可用。我们可以在RSpec 3.0中尽快执行此操作,但我们希望为用户提供足够的时间来使用它“
我从这个站点复制:“潜在的问题是RSpec应该的语法:为了正常工作,它必须在系统中的每个对象上定义......但是RSpec并不拥有系统中的每个对象而无法确保它始终如一地工作。正如我们所见,它不像RSpec期望代理对象那样工作。请注意,这不仅仅是RSpec的问题;它也是minitest / spec的must_xxx语法的问题。“
就个人而言,我仍然使用两者的混合,因为所有“shoulda”匹配者都使用旧的语法,并且非常容易使用...