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

时间:2014-03-10 14:33:27

标签: ruby-on-rails rspec rspec-rails

将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会返回任何相关信息!

1 个答案:

答案 0 :(得分:8)

从版本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))。