1
在RSpec中,你可以使用一個instance_double,以確保您的期望是有效的 - 換句話說,如果我有:Rspec的 - 希望只接收如果方法存在
class Foo
def bar
end
end
我可以做
dbl = instance_double('Foo')
expect(dbl).to receive(:bar)
...
我知道如果我從Foo
中刪除bar
方法,我的測試會拋出一個錯誤,阻止我悄悄地破壞事情。
我怎樣才能達到與類方法相同的效果?我只是不小心造成的,其我的測試沒有趕上一個錯誤,因爲我做了以下內容:
class Foo
def self.bar
end
end
測試:
expect(Foo).to receive(:baz)
Foo.baz
沒有錯誤提出了,因爲我通過上面的預期增加了一個存根,但真的那種方法不存在。我知道我可以做class_double
,但Foo.baz
在我的代碼的另一部分被調用,而不是在我的測試中,所以我不能讓它調用class_double
而不是實際的類。
爲什麼要嘲笑它呢? 'expect(Foo).to respond_to(:bar)' – max
我不測試它是否響應bar,我測試它被其他代碼調用 – jtmarmon