java jUnit 意外方法调用 DAO Easymock
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16571017/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jUnit Unexpected method call DAO Easymock
提问by Mitja Rogl
I am newbie with mock testing. I want to test my DAO for users. Here is my code.
我是模拟测试的新手。我想为用户测试我的 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);
}
When I run it I get this error:
当我运行它时,我收到此错误:
Updated the stacktrace:
更新了堆栈跟踪:
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$a06d4a9.checkUser(<generated>)
at si.soa.rentacar.ws.impl.UserService.registration(UserService.java:117)
at si.soa.rentacar._testUser.testAddUser(_testUser.java:58)
....
回答by hoaz
Your UserService#registration
method calls UserDAO#checkUser
method, so you need to add it to expectation list. I don't know its parameters, so I am providing you only sample for addUser call below:
您的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);
}