Я проверил все существующие проблемы с переполнением стека. Но я не мог найти правильное решение.Служба вызывает фактический класс вместо издевающегося класса. Junit4 и Jmock
public class TestAuthenticate {
private RestService rs;
private String token_actual = token1;
private Mockery context;
private Authenticate authenticate_object;
@Before
public void setup(){
context = new JUnit4Mockery() {{
setImposteriser(ClassImposteriser.INSTANCE);
}};
rs = new RestService();
}
@Test
public final void testAuthenticate() {
authenticate_object = context.mock(Authenticate.class);
context.checking(new Expectations() {
{
oneOf(authenticate_object).authenticate_method("username", "password");
will(returnValue(token1));
}
});
String token = rs.authenticate("username", "password");
System.out.println(token);
assertEquals(token_actual, token);
context.assertIsSatisfied();
}
}
Это звонит фактический метод AUTHENTICATE вместо макета класса AUTHENTICATE. Может ли кто-нибудь сказать мне, что я делаю неправильно?
public class RestService {
public string authenticate(String user, String pass){
Authenticate auth = new Authenticate();
String res = auth.authenticate(user,pass);
}
return res;
}
Я не вижу где-нибудь, что вы передаете в 'authenticate' объекта к чему-либо. Как «RestService» должен его получить? – chrylis
См. Мой обновленный код. Служба Rest имеет метод аутентификации, который вызывает объект Authenticate. – Jenny
Нет ... вы * создаете * новый 'Authenticate' каждый раз, когда этот метод вызывается. Интересно, имеет ли JMock что-то, что эквивалентно Mockito, в котором можно фактически издеваться над новыми вызовами. – Makoto