2
在我的代碼,我測試的對象是特定的類的實例,但是實例雙打是一類RSpec::Mocks::InstanceVerifyingDouble
如何驗證rspec instance_double作爲doubled類的實例?
一個人爲的例子是...
# spec
@double = instance_double Foo
allow(Bar).to receive(:foo).and_return @double
# lib
until Bar.foo.instance_of? Foo
# logic to test
if something == true
Bar.foo = Foo.new
else
Bar.foo = nil
end
end
有什麼辦法操縱rspec double來模擬課程?或者我需要返回一個實際的Foo實例嗎?
UPDATE 我的意思是說,他們的方式我目前得到解決該問題,是這樣的......
# spec
allow(Bar).to receive(:foo).and_return Foo.allocate
# lib
if Bar.foo.instance_of? Foo
# do something
end
我很好的這種解決方案,因爲在初始化符不實際執行,但我寧願使用rspec /雙打一致性
UPDATE 更改爲示例(希望)更清晰。我需要測試something
的結果,VS結果爲Bar.foo
。 寫作人爲的例子很難:)
so ...設置'Bar.foo'返回的代碼是想要測試,而不是調用'instance_of?'...以便測試通過,但它不會測試我想測試的內容 – brewster
我很困惑。我認爲這是關於設置測試,以便運行'#do something'代碼並且可以測試。如果你正在測試'Bar.foo'的返回值,你爲什麼要對它進行存根? (如果您在示例中添加了更多內容,例如您想要通過的測試以及要測試的內容,這可能會有所幫助。 –