- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我的代码中,我测试对象是特定类的实例,但是实例 double 是 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/doubles 来保持一致性
更新将示例更改为(希望)更清楚。我需要测试 something
的结果,VS Bar.foo
的结果。 编写人为的示例很困难:)
最佳答案
当然。您可以只 stub #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
关于ruby - 如何将 rspec instance_double 验证为 doubled 类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566348/
我正在寻找以安全方式将昂贵元素加倍的“最小测试方法”。 我知道模拟、 stub 并使用它们,但问题是简单的 double 不防水。如果真实对象的 api 改变了,测试通过了,但是真正的实现失败了。 我
我在使用 instance_double 时遇到间歇性测试失败。 我有一个包含 4 个规范的文件。这是来源: require 'rails_helper' describe SubmitPost do
在我的代码中,我测试对象是特定类的实例,但是实例 double 是 RSpec::Mocks::InstanceVerifyingDouble 的类 一个人为的例子是... # spec @doubl
我有一个这样的测试用例: describe WorkCardsController do it "something" do work_card = instance_doub
在 RSpec 单元测试中,我有一个像这样定义的模拟: let(:point) { instance_double("Point", :to_coords => [3,2]) } 在 Point 类中
我是一名优秀的程序员,十分优秀!