在我的代码中,我测试对象是特定类的实例,但是实例双精度是RSpec::Mocks::InstanceVerifyingDouble
# 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的实际实例?
更新 我的意思是提到,我现在解决这个问题的方式就像这样......
# spec
allow(Bar).to receive(:foo).and_return Foo.allocate
# lib
if Bar.foo.instance_of? Foo
# do something
end
我对这个解决方案很好,因为Foo上的初始化实际上没有执行,但我更喜欢使用rspec / double来保持一致性
更新
将示例更改为(希望)更清楚。我需要测试something
的结果,VS Bar.foo
的结果。 编写人为的例子很难:)
答案 0 :(得分:0)
不确定。您可以直接numbers.py
来返回您想要的内容。
#instance_of?