RSpec と JRuby で Java クラスをテストしています。
RSpec テストでインポートされた Java クラスの super への呼び出しをスタブ化するにはどうすればよいですか?
例えば:
私は2つのJavaクラスを持っています:
public class A{
public String foo() {
return "bar";
}
}
public class B extends A
public String foo() {
// B code
return super.foo();
}
}
JRuby で A.foo のコードではなく、B.foo のコードをテストしようとしています。RSpec テストでスーパー クラス メソッドの呼び出しをスタブ化するにはどうすればよいですか?
rspec テスト:
java_import Java::B
describe B do
it "should not call A.foo" do
# some code to stub out A.foo
b = B.new
b.foo.should_not == "bar"
end
end
最初にモジュールメソッドにヒットすることを期待して、新しい foo メソッドを含むモジュールを B のクラスに含めようとしましたが、B はまだ A を呼び出します。モジュールを挿入する手法は Ruby では機能しますが、JRuby およびインポートされた Java クラスでは機能しません。
RSpec テストに合格するためにスーパークラス メソッドをスタブ化する他のアイデアはありますか?