ruby-on-rails – rspec-rails:未定义的方法`true?’ for true:更新为3.0.0.beta2版本后的TrueClass

将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,则可以使用true(或者为(true)).

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...