SpringのMockito Mocks:「()が模擬ではないことを確認するために渡された議論!」
質問
からコードを使用しました このブログ 私のユニットテストでモッキートモックを注入する。ただし、モックが自動化される前に、JDKプロキシで春に包まれます。これにより、検証(AutowiredMock)がスローします 「()が模擬ではないことを確認するために渡された議論!」. 。 Mockitoが検証するために渡された引数が渡されたことを確認している場合、例外はスローされます。
private static Method getCallbacksSetter(Class type, String methodName) throws NoSuchMethodException {
return type.getDeclaredMethod(methodName, new Class[]{ Callback[].class });
}
私の質問は、BeanFactoryPostProcessorで登録する模擬モックビーンズをプロキシしないで春を伝える方法です。 Proxy-Target-Class = "true"の設定を避けたいことに注意してください。
ありがとう
解決
モックをセッターメソッドに自動させると、そこで手動で描くことができます。
@Autowired public setMockedService(MyServiceInterface service) {
mockedService = unwrapped(service) // to implement unwrapped(), you might use AOPUtils
}
それは醜いですが、それは proxy-target-class
補足的には、モッキングがあなたにこれほど多くの痛みを与えているなら、あなたはスタブソリューションを見るべきではありませんか?
他のヒント
Mockito(現在1.9.0)の最新バージョンは、オブジェクトがモックであるかそうでないかを検出するアルゴリズムを変更するこの問題を修正しました。
所属していません StackOverflow