如何验证rspec instance_double作为doubled类的实例?

时间:2016-09-19 06:06:41

标签: ruby rspec

在我的代码中,我测试对象是特定类的实例,但是实例双精度是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的结果。 编写人为的例子很难:)

1 个答案:

答案 0 :(得分:0)

不确定。您可以直接numbers.py来返回您想要的内容。

#instance_of?