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很遗憾,有这么多人不愿意先做那种事