次の 2 つの自明なモデルを考えてみましょう。
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
このテスト (または類似のテスト) を実行すると、スタブが機能していないように見えます。
Failure/Error: person.iq_score
NoMethodError:
undefined method `iq_score' for nil:NilClass
ご想像のとおり、失敗は上記の「ここでエラー」とマークされた行にあります。should_receive
行をコメント アウトすると、このエラーは表示されなくなります。どうしたの?