使用 Mockito 对流畅的界面进行单元测试
Unit testing a fluent interface with Mockito
我想模拟构建器模式中使用的 DAO 接口,如下所示。但是,当我 运行 下面的测试通过时,表明我的模拟对象从未被调用过。我做错了什么?
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);
}
}
改用 PowerMockito。在那里你可以定义每当你调用 DAO 的构造函数时,return 我的模拟对象而不是 returning 实际的 DAO 对象。
请参考 this 了解如何使用 PowerMockito。
我想模拟构建器模式中使用的 DAO 接口,如下所示。但是,当我 运行 下面的测试通过时,表明我的模拟对象从未被调用过。我做错了什么?
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);
}
}
改用 PowerMockito。在那里你可以定义每当你调用 DAO 的构造函数时,return 我的模拟对象而不是 returning 实际的 DAO 对象。
请参考 this 了解如何使用 PowerMockito。