模拟dao在junit中调用

时间:2015-11-29 13:51:46

标签: mocking mockito

我正试图在junit中模拟dao调用。我有一个dao方法findById,它返回一个User对象。这可以通过类似于以下示例

轻松完成
CustomerDAO customerDao = Mockito.mock(CustomerDAO.class);
Mockito.when(customerDao.findCustomerById(Mockito.anyLong()))
     .thenReturn(new Customer(1, "stackoverflow"));

但我尝试填充的User对象中包含许多嵌入式实体。为了填充一个用户,我必须首先填充所有嵌入的实体(如UserAddress,UserActivity等)。这导致要编写大量代码。

请建议我们是否有任何简单的方法来填充整个用户实体及其嵌入的实体对象以进行模拟。

1 个答案:

答案 0 :(得分:0)

如果您正在嘲笑 CustomerDAO 来测试其功能,您可能不需要手动初始化完整的User类。因此,您可以将空值传递给User对象中未在测试中使用的字段。

如果您想要/需要User对象及其所有字段的完整功能,您也可以模拟这些字段并将它们传递给您创建的Customer对象。您还可以创建一个没有参数的构造函数,将字段初始化为某些默认值并使用它们进行测试。