将rspec-rails从2.14.0版本更新到3.0.0.beta2之后,所有使用be_true
或be_false的测试都将失败。
Failure/Error: user.new_record?.should be_true
NoMethodError:
undefined method `true?' for true:TrueClass
有什么建议吗? Google返回有关此内容的任何信息!
最佳答案
从3.0版开始,RSpec将be_true
重命名为be_truthy
,并将be_false
重命名为be_falsey
,如https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/be-matchers中所述,并在https://github.com/rspec/rspec-expectations/issues/283中进行了讨论。be_true
和be_false
在2.99中被弃用,而在3.00中被丢弃,因为它们不仅分别与true
和false
相匹配,因此具有误导性。您收到的错误消息是因为缺少任何特定的be_xxxx
方法定义,因此be_xxxx
会查找并实际调用xxxx?
。
请注意,如果只想匹配true
,则可以使用be true
(或be(true)
)。
关于ruby-on-rails - rspec-rails:更新为3.0.0.beta2版本后,true:TrueClass的未定义方法 `true?',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22303068/