gpt4 book ai didi

ruby - should_receive 会做一些我不期望的事情吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:02:43 25 4
gpt4 key购买 nike

考虑以下两个简单的模型:

class Iq

def score
#Some Irrelevant Code
end

end

class Person

def iq_score
Iq.new(self).score #error here
end

end

以及以下 Rspec 测试:

describe "#iq_score" do

let(:person) { Person.new }

it "creates an instance of Iq with the person" do
Iq.should_receive(:new).with(person)
Iq.any_instance.stub(:score).and_return(100.0)
person.iq_score
end

end

当我运行这个测试(或者更确切地说,一个类似的测试)时, stub 似乎没有工作:

Failure/Error: person.iq_score
NoMethodError:
undefined method `iq_score' for nil:NilClass

正如您可能猜到的那样,失败发生在上面标记为“此处错误”的行中。当 should_receive 行被注释掉时,这个错误就消失了。怎么回事?

最佳答案

由于 RSpec 具有扩展 stub 功能,现在以下方式是正确的:

Iq.should_receive(:new).with(person).and_call_original

它将 (1) 检查期望 (2) 将控制权返回给原始函数,而不仅仅是返回 nil。

关于ruby - should_receive 会做一些我不期望的事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11318662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com