这是我的代码:
class Dictionary
def entries
@entries ||= {}
end
def add(hash)
if hash.class == Hash
hash.each_pair do |k, v|
entries[k] = v
end
else
makehash = {hash => nil}
self.add(makehash)
end
@entries = entries
end
def keywords
@entries.keys
end
def include?(k)
if @entries == nil
false
elsif self.keywords.include?(k)
true
else
false
end
end
end
这是我正在运行的测试:
require 'dictionary'
describe Dictionary do
before do
@d = Dictionary.new
end
it 'can check whether a given keyword exists' do
@d.include?('fish').should be_false
end
现在,该测试将失败。但是,如果我将其更改为
it 'can check whether a given keyword exists' do
@d.include?('fish').should == false
end
然后它通过了。
我怎样才能改变我的代码,使 should be_false
而不是 should == false
通过?谢谢。
be_false
匹配虚假值(nil
和 false
)和be_true
匹配真值(nil
或 false
除外)
来自 Rspec > 3.0,
be_false
重命名为 be_falsey
和
be_true
重命名为 be_truthy
如果你想精确匹配false
,你应该使用
obj.should eq false
参见 Documentation有关“be”匹配器的更多信息
我是一名优秀的程序员,十分优秀!