如何在不测试方法的行为(已在其他地方测试过)Foo.bar
的情况下测试以下示例中调用的方法?bar
# Code
class Alpha
def process
Foo.bar
end
end
以下规范是我到目前为止所拥有的。不幸的是,这种方法会引发“已定义类”警告,因为 Foo 已在我的项目的其他地方定义。
# Spec
let(:alpha) { Alpha.new }
let(:klass) { MiniTest::Mock.new }
subject { alpha.process }
it "calls Foo.bar" do
klass.expect(:bar, '') # Define method call expectation
Foo = klass # Redefine Foo as a mock object
subject # Run method being tested
klass.verify # Confirm method was called
end
我不希望我的测试依赖于Foo
类,因为这是一个外部依赖,我不想测试 的响应值Foo.bar
,因为它可能会任意改变。