EasyMock调用两个DAO方法 - 意外的方法调用UserAdminDAO.updateUser

时间:2013-03-08 13:13:35

标签: unit-testing junit mocking easymock

在我的DAO方法单元测试中,我正在尝试测试更新用户方法。但是,我必须创建一个用户然后更新它。所以我的模拟DAO期待addUser调用,但是当我调用update方法时,它正在抱怨

java.lang.AssertionError:   意外的方法调用UserAdminDAO.updateUser(null):

这是代码片段

expect(userAdminDAO.addNewUser(u1)).andReturn(u1);
    replay(userAdminDAO);

    User u2 = (User)userService.addNewUser(ar);
    Assert.assertEquals(u.getUserName(), u2.getUserName());

    u2.setUserName("new modified");
userAdminDAO.updateUser(u2);   //error is on this line 
    expectLastCall().once().andAnswer(new IAnswer<User>() {
        public User answer() {
            return null;
        }
    });
    replay(userAdminDAO);
    userService.updateUser(u2);

1 个答案:

答案 0 :(得分:1)

在添加第二个期望之前,您已经重播了模拟:

expect(userAdminDAO.addNewUser(u1)).andReturn(u1);
replay(userAdminDAO); // you shouldn't do this
...
userAdminDAO.updateUser(u2);