0

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 テストに合格するためにスーパークラス メソッドをスタブ化する他のアイデアはありますか?

4

1 に答える 1

1

できないと思いますし、非論理的です。super.foo() の foo() メソッド呼び出しは、その実装の一部です。原則として、正しい動作のために必要になる場合があります。

おそらく、個別にテストしたい機能を個別のメソッドに分離し、foo() から呼び出してテストする必要がありますか?

于 2010-02-27T19:29:25.460 に答える