我正在代码学校为Rspec做教程,并且有一个这样的示例代码。
describe Zombie do
it 'increases the number of tweets' do
zombie = Zombie.new(name: 'Ash')
zombie.tweets.new(message: "Arrrgggggggghhhhh")
zombie.tweets.should have(1).tweets
end
end
它希望有一条推文,所以我将have(1).tweets
重写为have(1).tweet
。然后它也有效。
但在documentation中,没有迹象表明单数形式被接受。
我想知道建议使用哪种方式,have(1).tweets
或have(1).tweet
。
答案 0 :(得分:1)
have(n)
之后的方法调用是“语法糖”,可以是您想要的任何内容,如https://www.relishapp.com/rspec/rspec-expectations/v/2-99/docs/built-in-matchers/have-n-items-matcher中的Relish文档以及早期版本中所述。
我引用了2.99 Relish页面,因为从3.0开始,此功能已移至https://github.com/rspec/rspec-collection_matchers的单独rspec-collections_matcher
gem。您将找不到3.0文档中提到的匹配器。
至于是否应该使用单数或复数形式的“推文”,我相信有一个共识,就英语而言,单数形式代表了这个特定情况的正确语法。如果没有明确的共识,请参见https://meta.stackexchange.com/questions/165244/is-negative-one-plural。