Я использую Mockito
для издевательских служб в моем текущем проекте. У меня есть сценарий, в котором мне нужно высмеять прикованные методы в коде. Привязанный метод использует свободный дизайн. Код выглядит следующим образом. Я не мог найти решение, которое удовлетворяет моему требованию.Мокальные вызовы в цепочке в Java/Mockito
ProcessCall setValue = ProcessCall.url("").http(HttpMethod.GET).contentType(null).reqHeaders(null).payload(null).create();
Я пытаюсь издеваться выше код, как показано ниже
@Test
public void ProcessPost(){
System.out.println("--------------------------");
ProcessCall procCall= Mockito.mock(ProcessCall.class, Mockito.RETURNS_DEEP_STUBS);
Mockito.when(ProcessCall .url("").http(HttpMethod.GET).contentType(null).reqHeaders(null).payload(null).create()).thenReturn(??);
}
Не уверен, что пройти в thenReturn (??) method.ProcessCall класс с собственным конструктором. и он имеет метод execute(), который мне нужно выполнить из результата вызова. Я получаю ошибку ниже:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Or 'a static method call on a prepared class`
For example:
@PrepareForTest({ StaticService.class })
TestClass{
public void testMethod(){
PowerMockito.mockStatic(StaticService.class);
when(StaticService.say()).thenReturn(expected);
}
}
Also, this error might show up because:
1. inside when() you don't call method on mock but on some other object.
2 . inside when() you don't call static method, but class has not been prepared.
Может кто-нибудь помочь мне решить эту проблему. Я застрял в этой проблеме и не могу найти правильное решение на SO.
Благодаря
А за «использование powermock для статических вызовов»; также учитывайте «не используя статические вызовы, поэтому не нуждаясь в элементе власти». Если у вас есть выбор, перейдите на вариант 2 здесь; и всегда! – GhostCat