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