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
。また、任意に変更される可能性があるため、の応答値をテストしたくありません。