jUnit意外的方法调用DAO Easymock检查用户

时间:2013-05-19 13:11:14

标签: java mocking tdd dao easymock

我在测试DAO检查用户方法时遇到问题。 这是代码:

private UserService service;
private UserDao mockDAO;

@Before
public void setUp(){
    service=new UserService();
    mockDAO=createMock(UserDao.class);
    service.setUserDao(mockDAO);
}

@Test
public void testCheckUserLogin(){

    User results=new User();
    User test=new User();
    test.setUsername("x");
    test.setPass("y");


   EasyMock.expect(mockDAO.checkUser(test)).andReturn(results.getIdUser());        
   EasyMock.replay(mockDAO);
   assertEquals(service.login(test),service.login(results));
   EasyMock.verify(mockDAO);
}

当我运行它时,我收到此错误:

  java.lang.AssertionError: 
  Unexpected method call UserDao.checkUser(com.sot.car.model.User@4e527622):

我不知道为什么会收到此错误?我已为方法检查用户

添加了EasyMock.expect

1 个答案:

答案 0 :(得分:0)

因为,当我们在Mocking中使用对象时,我们需要使用匹配器来执行对象比较。

在您的情况下,您可以设置Matcher以匹配它,或者如果您对任何用户对象感到满意,则使用EasyMock.isA(User.class) 例如 EasyMock.expect(mockDAO.checkUser(EasyMock.isA(User.class)))andReturn(results.getIdUser())。

OR

EasyMock.expect(mockDAO.checkUser(试验))andReturn(results.getIdUser());
EasyMock.reportMatcher(new MatcherClass()); //参考:http://www.easymock.org/EasyMock2_2_Documentation.html