0

我在测试来自 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为方法检查用户添加了

4

1 回答 1

0

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

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

或者

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

于 2013-05-23T02:08:01.470 回答