jUnit Inattendu appel de la méthode DAO Easymock
Je suis novice avec des simulations de tests.
Je veux tester mon DAO pour les utilisateurs. Voici mon code.
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);
}
Quand je le lance, j'obtiens cette erreur:
Mise à jour de la 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$$1a06d4a9.checkUser(<generated>)
at si.soa.rentacar.ws.impl.UserService.registration(UserService.java:117)
at si.soa.rentacar._testUser.testAddUser(_testUser.java:58)
....
- votre UserService#méthode d'enregistrement des appels UserDAO#checkUser méthode, de sorte que vous devez l'ajouter à la liste d'attente
- Alors, quelle est exactement la liste d'attente? Pouvez-vous donner un indice?
- veuillez vérifier javadoc pour EasyMock.expectLastCall() ou EasyMock.attendre()
- Avez-vous un exemple comment dois-je utiliser ces méthodes avec DAO?
Vous devez vous connecter pour publier un commentaire.
Votre
UserService#registration
les appels de méthodeUserDAO#checkUser
méthode, de sorte que vous devez l'ajouter à la liste d'attente. Je ne sais pas ses paramètres, donc je vous fournis qu'à titre d'échantillon pour addUser appel ci-dessous:addUser
appel trop comme je l'ai mentionné ci-dessusjava.lang.IllegalStateException: missing behavior definition for the preceding method call: UserDAO.checkUser(si.soa.rentacar.model.User@78bc6d6a) Usage is:expect(a.foo()).andXXX()
expect
au lieu deexpectLastCall
: EasyMock.attendre(mockDAO.l'outil checkUser(u)).andReturn(true);assertTrue(service.login(u));
? Merci pour l'aide.