Я хочу издеваться над интерфейсом DAO, используемым в шаблоне построителя, как показано ниже. Однако, когда я запускаю тест ниже, он передает, что мой макет-объект никогда не вызывается. Что я делаю не так?Тестирование модульного интерфейса с помощью Mockito
public class DBContent {
...
public static class Builder {
DAO dao = new DAO();
...
public Builder callInsert() {
...
long latest = dao.insert();
...
}
}
...
}
@RunWith(MockitoJUnitRunner.class)
public class DBContentTest {
@Mock
DAO dao;
@Test
public void test() {
when(dao.insert()).thenReturn(1111L);
DBContent db = DBContent.db()
.callInsert()
.callInsert()
.callInsert()
.build();
verifyZeroInteractions(dao);
}
}
Вы создаете ложный DAO в своем тесте, но создатель, который вы тестируете, не использует его. Он создает свой собственный DAO. Вы должны передать макет DAO в качестве аргумента при построении построителя. Узнайте об инъекции зависимостей. –