Ruby';标准普尔&;RSpec测试时逻辑表现不一致
我有一个方法,包括(在后续行中)以下代码:Ruby';标准普尔&;RSpec测试时逻辑表现不一致,ruby,rspec,boolean-expression,Ruby,Rspec,Boolean Expression,我有一个方法,包括(在后续行中)以下代码: candidate_lines.each do |line| return line if priority_1?(line) && line.marked_by?(self) end 据我所知,其中的方法是不相关的。让我恼火的是,我有一个测试,它应该跳过方法的这一部分,只是因为我给出了规范: it "without any priority 1 lines, returns all priority 2 lines marke
candidate_lines.each do |line|
return line if priority_1?(line) && line.marked_by?(self)
end
据我所知,其中的方法是不相关的。让我恼火的是,我有一个测试,它应该跳过方法的这一部分,只是因为我给出了规范:
it "without any priority 1 lines, returns all priority 2 lines marked by itself" do
line1 = double :line, marked_by?: true
line2 = double :line, marked_by?: true
allow(joshua).to receive(:priority_1?).and_return(:false)
expect(joshua).to receive(:candidate_lines).and_return([line1, line2])
expect(joshua.tiebreak_lines).to eq [line1, line2]
end
然而,当我运行测试时,返回语句被触发。我已经在“returnline…”行之前使用puts语句对其进行了手动测试,结果表明,虽然“priority_1?(line)”返回false,但出于某种原因,“priority_1?(line)和&line.marked_by?(self)正在评估true
这里发生了什么?您将符号
:false
与布尔值false
混淆了
因为
:false
既不是false,也不是nil,所以它是真实的,这就&&
或之类的事情而言,如果是真的。你把符号:false
与布尔值false
混淆了
因为:false
既不是false也不是nil,这是真实的,就&
或这样的事情而言,这是真的。啊,比我快了几秒钟:)我正忙着重新格式化代码,不过:)@SergioTulentsev很遗憾,先做这种事情有这么大的阻碍因素啊,比我快了几秒钟:)我正忙着重新格式化代码,不过:)@SergioTulentsev很遗憾,有这么多人不愿意先做那种事