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

Java jUnit意外方法调用DAO Easymock检查用户,java,mocking,tdd,dao,easymock,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 testCheckUserL

我在测试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):

我不知道为什么会出现这个错误?我已经为方法check user添加了
EasyMock.expect
,因为当我们在模拟中使用对象时,我们需要使用匹配器来执行对象比较

在您的情况下,您可以设置一个匹配器来匹配它,或者如果您对任何用户对象都满意,那么可以使用EasyMock.isA(User.class) 例如 expect(mockDAO.checkUser(EasyMock.isA(User.class)).andReturn(results.getIdUser())

expect(mockDAO.checkUser(test)).andReturn(results.getIdUser())
reportMatcher(新MatcherClass());//参考: