2

模擬試験初心者です。ユーザーの DAO をテストしたい。これが私のコードです。

private UserService service;
private UserDAO mockDAO;

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

@Test
public void testAddUser(){

    mockDAO.addUser( (User) EasyMock.anyObject());
    EasyMock.replay(mockDAO);
    User u=new User();
    u.setUserName("x");
    u.setPass("y");
    service.registration(u);
    EasyMock.verify(mockDAO);

}

実行すると、次のエラーが表示されます。

スタックトレースを更新しました:

  java.lang.AssertionError: 
  Unexpected method call  UserDAO.checkUser(si.soa.rentacar.model.User@3655dba1):
  UserDao.addUser(<any>): expected: 1, actual: 0
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:85)
at org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:94)
at si.soa.rentacar.dao.UserDAO$$EnhancerByCGLIB$$1a06d4a9.checkUser(<generated>)
at si.soa.rentacar.ws.impl.UserService.registration(UserService.java:117)
at si.soa.rentacar._testUser.testAddUser(_testUser.java:58)
     ....
4

1 に答える 1

3

あなたのUserService#registrationメソッドはメソッドを呼び出すUserDAO#checkUserので、期待リストに追加する必要があります。そのパラメーターがわからないので、以下に addUser 呼び出しのサンプルのみを提供します。

@Test
public void testAddUser(){

    // prepare data
    User u = new User();
    u.setUserName("x");
    u.setPass("y");

    // expectation section
    mockDAO.addUser(u);
    EasyMock.expectLastCall();
    EasyMock.expect(mockDAO.checkUser(u)).andReturn(true);

    EasyMock.replay(mockDAO);

    // scenario
    service.registration(u);

    // verification
    EasyMock.verify(mockDAO);

}
于 2013-05-15T20:12:11.667 に答える