将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_truebe_false在2.99中被弃用,而在3.00中被丢弃,因为它们不仅分别与truefalse相匹配,因此具有误导性。您收到的错误消息是因为缺少任何特定的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/

10-16 00:20