我正在使用Mockito并尝试模拟下面的测试类。
这里的主要类方法createNewId()通过调用dao类“memberDao.findNext()”获取对象。
我试图模拟'memberDao.findNext()'并按照下面的代码返回对象,但它返回为NULL。
此外,如何编写void方法的测试,即“memberDao.delete(newId.getId());” 需要在这行代码“when(memberDao.findNext()).thenReturn(id);”之后实现它。
请让我知道我做错了什么。
此外,如何编写void方法的测试,即“memberDao.delete(newId.getId());” 需要在这行代码“when(memberDao.findNext()).thenReturn(id);”之后实现它。
请让我知道我做错了什么。
@RunWith(MockitoJUnitRunner.class)
public class MemberTest
{
@InjectMocks
private Member member;
@Mock
private MemberDao memberDao;
@Test
public void createId() throws Exception
{
MembersIdDto id = new MembersIdDto();
id.setId("967405286");
when(memberDao.findNext()).thenReturn(id);
verify(member).createNewId().contains("967405286");
}
public class Member {
@Resource
MemberDao memberDao;
public String createNewId()
{
MembersIdDto newId = memberDao.findNext();
Assert.notNull(newId, "newId is empty");
String id = newId.getId();
memberDao.delete(newId.getId());
return id;
}
}
我试图模拟的是memberDao.findNext()这行代码。
错误信息为: java.lang.IllegalArgumentException: newId为空
at org.springframework.util.Assert.notNull(Assert.java:134)
at Member.createNewId() (Member.java:20)
// 第20行代码是"Assert.notNull(newId, "newId is empty");"
manager
的类型是什么?这不是被测试的类吗?我在你的@Test
方法中看不到任何对生产代码的调用。 - mle@Mock
来创建模拟对象,或者手动创建Mockito.mock(MemberDao.class)
。两种方式都使用是多余的。 - mle