cucumber:RSpec::Expections::ExpectationNotMetError:expected true响应'true'吗`
根据,我可以将cucumber:RSpec::Expections::ExpectationNotMetError:expected true响应'true'吗`,cucumber,ruby,rspec-expectations,Cucumber,Ruby,Rspec Expectations,根据,我可以将rspec期望表与 但如果我使用#be_true方法,它会例外地拒绝回答: expect(true).to be_true # => RSpec::Expectations::ExpectationNotMetError: expected true to respond to `true?` 因此,我不能像在rails中那样使用该方法,但没有rails本身。所以问题是,我如何添加不包括rails的方法,并且不手动定义它们?尝试如下: expect(true).to be
rspec
期望表与
但如果我使用#be_true
方法,它会例外地拒绝回答:
expect(true).to be_true # => RSpec::Expectations::ExpectationNotMetError: expected true to respond to `true?`
因此,我不能像在rails
中那样使用该方法,但没有rails
本身。所以问题是,我如何添加不包括rails的方法,并且不手动定义它们?尝试如下:
expect(true).to be true
尽管RSpec文档表明,如果对象不是nil
或false
,则be\u true
将通过,但实际上,我发现如果对象是true
,则不会通过。如果您想特别检查值是否为true
,而不仅仅是真实值,则需要使用be-true
,(带空格),eql-true
,eq-true
,equal-true
,等等
(如果您还不熟悉,可以阅读RSpec的相等匹配器之间的差异。您没有说您正在使用哪个RSpec版本,因此这适用于3.2,我相信其他版本也是如此。)使用be_-truthy
而不是be_-true
@但是在rails中,我曾经使用过be_-true
=)be_-true
如果在对象定义的方法(如def-true?)中工作正常?;是的;我知道,我可以重新定义它。但我不希望这样做,I.expect(it)。要工作,这也需要更改代码。我相信最好是用真实的方式!谢谢你指出这一点。在这种情况下,是的,如果您正在寻找任何真实值,那么be\u truthy
更好。
expect(true).to be true