заменить нестатический метод java макет - PullRequest
0 голосов
/ 02 февраля 2011

Мне нужно смоделировать публичный, нестатический метод объекта.

Проблема в том, что я не могу создать фиктивный объект, потому что этот объект создается непосредственно в коде.

Я пытался шпионить за классом с помощью PowerMockito.spy () и PowerMockito.when (...), но он не работал (возможно, потому что PowerMockito.when работает только для статических и частных методов)

Например, предположим, мне нужно проверить это:

... myClass anObject = new myClass (); anObject.aMethod ();
...

Как я могу издеваться над вызовом anObject.aMethod () ??

Полагаю, мне нужно шпионить за моим классом, но он не сработал ..

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Вероятно, лучше выполнить рефакторинг вашего кода, чтобы использовать внедрение зависимостей.

Но быстрый гугл подсказывает, что вы на самом деле можете заглушить конструктор в PowerMockito. См. Javadoc, когдаNew .

Я не могу ручаться за это, поскольку я не использовал PowerMockito, но похоже, что это должно позволить вам заставить ваш вызов конструктора возвращать фиктивный объект.

1 голос
/ 02 февраля 2011

Использовать внедрение зависимостей.

В простейшем случае просто передайте объект фабрики методу, который создает ваш объект, и затем следите за этой фабрикой.

Другой способ сделать это - передатьфабрика для конструктора вашего объекта.

...