测试没有DAO的服务层

时间:2012-03-01 00:03:14

标签: java spring testing junit mocking

你能举个例子说明我如何使用模拟对象,Spring或任何其他框架在没有DAO的情况下测试我的服务层。我的Java代码如下所示:

public int myServiceMethod(int number) {

    int myInt = Factory.getDAOImpl.getNumber();
    return myInt + number * 8;
}

我想测试myServiceMethod的逻辑但不测试DAO方法。 可能吗?我必须重构它吗?你能告诉我一个如何测试这个简单方法的例子。 谢谢

1 个答案:

答案 0 :(得分:6)

在您的示例中,您只需要模拟DAO(例如使用Mockito),并修复要返回的数字。

DAOImpl myDao = mock(DAOImpl.class);
when(myDao.getNumber()).thenReturn(7);

调用方法getNumber时,您将始终获得7.在创建服务时传递此DAO,并正常编写测试:

assertEquals(224, service.myServiceMethod(4));

我希望这有帮助!