0

DAO からの check user メソッドのテストに問題があります。コードは次のとおりです。

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

なぜなら、モッキングでオブジェクトを使用する場合、マッチャーを使用してオブジェクトの比較を実行する必要があるからです。

あなたの場合、それに一致するようにMatcherを設定するか、ユーザーオブジェクトに満足している場合は、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(新しいMatcherClass()); // 参照: http://www.easymock.org/EasyMock2_2_Documentation.html

于 2013-05-23T02:08:01.470 に答える