这是我的代码:
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
?感谢。
答案 0 :(得分:7)
be_false
匹配falsey值(nil
和false
)和
be_true
匹配真实值(nil
或false
除外)
来自Rspec> 3.0,
be_false
已重命名为be_falsey
和
be_true
已重命名为be_truthy
如果您想与false
完全匹配,则应使用
obj.should eq false
有关'be'matchers
的更多信息,请参阅Documentation