0

今日、Mockito と spring を使用して作業しているときに、このシナリオに感銘を受けました。

    public class MyClass {

    private MyService myService;

    int doSomethingElse(String str) {
        .....
        myService.doSomething(str);
        ...
    }
}

public interface MyService {
    String doSomething(String str);
}


public class Class1 {
    private MyClass myClass;

    public Stirng methodToBeTested() {
        myClass.doSomethingElse("..");
    }
}

public class class1Test {

    @Mock
    MyService myService;

    @Resource
    @Spy
    @InjectMocks
    MyClass myClass;

    @Resource
    @InjectMocks
    Class1 class1;

    public void setUPTest() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void methodToBeTestedTest() {
        this.setUPTest();
            ...
            class1.methodToBeTested();
    }

}

ここで「MyService」をモックしたいと思います。ただし、 MyService は "MyClass" で使用され、 "Class1" で使用されます。

spring を使用して「MyClass」と「Class1」を初期化したい。

このテストを実行しようとすると、次の例外が発生しました

org.mockito.exceptions.base.MockitoException: クラス $Proxy79 をモック/スパイできません Mockito は以下をモック/スパイできません: - 最終クラス - 匿名クラス - プリミティブ型

誰でもこれで私を助けることができますか?

4

1 に答える 1

1

あなたはテストしていますが、これは依存関係としてClass1のみあります。このテストとは無関係です。の呼び出しをモックしてテストする必要があります。MyClassMyServiceMyClassdoSomethingElse

の呼び出しをテストする場合はdoSomething、への依存関係をモックするMyServiceaを作成する必要があります。MyClassTestMyService

于 2013-03-22T07:38:58.927 に答える