Идея насмешки состоит в том, чтобы проверить функциональность, которую вы написали, насмешки следует указывать только для сервисов, которые используются тестируемым методом.
Например, когда вы тестируете метод public Element addElement(int id, data d) throws SomeException;
вы должны вызвать исходную реализацию, а затем вы должны утвердить ответ, который вы ожидаете получить для данного ввода.
Предположим, что внутри addElement
метода вы внутренне вызываете службу myService.processData
, тогда вы должны смоделировать вызов только на myService.processData
, а остальная часть потока должна быть такой, как если бы метод был в реальном сценарии.
Вы должны прочитать больше о модульных тестах, одна ссылка, которую я нашел, здесь
РЕДАКТИРОВАТЬ
В приведенном вами примере Я думаю, что вы сделали следующее: вы поместили код в исходный метод dependency.addElement
внутри создаваемого имитируемого объекта. Если вы сделаете это, вам придется менять свой тестовый пример каждый раз, когда вы вносите изменения в код. потому что, как только вы сделаете изменение кода в исходном методе dependency.addElement
, код в тестовом классе не будет соответствовать ему c, и вы больше не будете тестировать эту функцию. Даже с этим кодом вы на самом деле не тестируете оригинальную функцию, так как dependency.addElement
подделан.
Правильный подход - вызвать оригинальный метод dependency.addElement
с известным входным сигналом и подтвердить ответ.
Надеюсь, это объясняет это.