在我的代码中,我测试一个对象是特定类的实例,但是实例双精度是一个类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
Run Code Online (Sandbox Code Playgroud)
有什么方法可以操纵 rspec double 来模拟该类吗?或者我是否需要返回 Foo 的实际实例?
更新 我想说的是,他们目前解决问题的方式是这样的......
# spec
allow(Bar).to receive(:foo).and_return Foo.allocate
# lib
if Bar.foo.instance_of? Foo
# do something
end
Run Code Online (Sandbox Code Playgroud)
我对这个解决方案很满意,因为 Foo 上的初始化实际上并未执行,但我更喜欢使用 rspec/doubles 来保持一致性
更新
将示例更改为(希望)更清晰。我需要测试 的结果 something
,VS 的结果Bar.foo
。编写人为的例子很困难:)
小智 0
当然。您只需存根即可#instance_of?
返回您想要的内容。
@double = instance_double Foo
allow(@double).to receive(:instance_of?).with(Foo).and_return(true)
allow(Bar).to receive(:foo).and_return @double
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1933 次 |
最近记录: |