Мокито издевается над Spring: «Аргумент передан для проверки () - не издевательство!» - PullRequest
2 голосов
/ 06 октября 2010

Я использовал код из этого блога , чтобы внедрить макеты Mockito в мои модульные тесты. Однако, до того, как макет был подключен автоматически, он был упакован Spring в JDK-прокси. Это приводит к тому, что любая проверка (autowiredMock) выдает «Аргумент, переданный для проверки (), не является ложным!» . Исключение выдается, когда Mockito проверяет, что аргумент, переданный для проверки (..), является допустимым ложным объектом Mockito в этом методе:

private static Method getCallbacksSetter(Class type, String methodName) throws NoSuchMethodException {
    return type.getDeclaredMethod(methodName, new Class[]{ Callback[].class });
}

Мой вопрос заключается в том, как сказать Spring, чтобы он не передавал Mockito фиктивные бины, которые я регистрирую в BeanFactoryPostProcessor? Обратите внимание, что я хотел бы избежать установки proxy-target-class = "true".

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 мая 2012

Последняя версия Mockito (в настоящее время 1.9.0) исправила эту проблему, изменив алгоритм, который определяет, является ли объект фиктивным или нет.

0 голосов
/ 07 января 2011

Если вы автоматически подключите макет к методу установки, вы можете развернуть его там вручную.

@Autowired public setMockedService(MyServiceInterface service) {
    mockedService = unwrapped(service) // to implement unwrapped(), you might use AOPUtils
}

Это безобразно, но это выход без proxy-target-class

Кстати, если насмешка причиняет вам столько боли, разве вы не должны искать решение для заглушки?

...