我有一个返回List的DAO方法。
现在我试图在我的服务层中模拟这个DAO类,但是当我调用DAO方法时,即使我已经模拟了DAO方法,它仍然给我一个空 以下是示例代码段
公共课ABCTest {
@InjectMocks
ABC abc = new ABC();
@Mock
private ABCDao dao;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
dao = Mockito.mock(ABCDao.class);
Mockito.when(dao.getListFromDB()).thenReturn(Arrays.asList("1","2","3"));
}
@Test
public void testServiceMethod() {
abc.serviceMethod(); // Inside this method when the DAO method is called, it is giving me an empty list even though I have mocked it above.
}
任何指针都会有所帮助
答案 0 :(得分:1)
MockitoAnnotations.initMocks(this);
使用@RunWith(MockitoJunitRunner.class)
代替dao = Mockito.mock(ABCDao.class)
,其覆盖dao
MockitoAnnotations.initMocks(this)
ABCDao
实例现在与测试用例的dao
成员不同。我只能假设以下内容会失败:
assertTrue(dao == abc.getDao())
解决方案:删除以下行
dao = Mockito.mock(ABCDao.class);