【发布时间】:2016-11-05 03:21:44
【问题描述】:
我意识到我编写测试的方式会产生误报。
假设我有这个源代码
class MyClass
def foo
end
def bar
1
end
end
foo 方法什么都不做,但假设我想编写一个测试,确保它在后台调用bar(即使它没有)。另外,我要保证直接调用bar的结果是1。
it "test" do
inst = MyClass.new
expect(inst).to receive(:bar).and_call_original
inst.foo
expect(inst.bar).to eq(1)
end
所以这是返回 true,但我希望它返回 false。
我想要这条线:
expect(inst).to receive(:bar).and_call_original
不考虑到 在我的测试用例中我直接调用 inst.bar 的事实。我希望它仅查看foo 方法的内部。
【问题讨论】:
-
为什么这么复杂?
expect(inst.bar).to eq(1)就够了。 -
您必须将第二个
expect移动到另一个测试示例。 -
@AndreyDeineko 这是一个展示概念的例子,而不是我正在使用的代码
标签: ruby-on-rails ruby rspec