2

一般的に:自分で作成していないオブジェクトのメソッドの元の実装を呼び出すことは可能ですか? つまり、テスト コードで作成したインスタンスを呼び出すことはできますが、テスト対象のコードで作成したインスタンスを呼び出すinv.proceed()方法がわかりません。その理由は、私が知っている唯一の方法は、インスタンスを制御不能にモックすることですが、@Mockedアノテーションを使用することですinv.proceed()が、「UnsupportedOperationException」で失敗するからです。

詳細: 以下のようなコードでこのエラーが発生します。

new NonStrictExpectations() {
    @Mocked("process")
    MyClassUnderTest o;
    {
        o.process(any);
        result = new Delegate<MyClassUnderTest>() {
            public void process(Invocation inv, Object o) {
                inv.proceed(); //Fails on this line with UnsupportedOperationException
            }
        }
    }
}

動的部分モッキングを使用すると、例外は消えます。

new NonStrictExpectations(o) {
    {
        o.process(any);
        result = new Delegate<MyClassUnderTest>() {
            public void process(Invocation inv, Object o) {
                inv.proceed();
            }
        }
    }
}

わかりません。@Mocked は「注入可能」ではないですか?

4

0 に答える 0