Я пытаюсь смоделировать вызов функции для внешнего API, который живет в операторе if
.Я не могу вернуть значение, которое у меня есть в .thenReturn
, и я не уверен, почему.Я искал ответы на это на SO, но я не могу найти ничего, что отвечает на мой вопрос.Большое спасибо за ваше время!
Вот мой класс, который я тестирую:
@Service
public class TwilioVerifyService {
public String requestCode(String phoneNumber, String countryCode, String via) throws AuthyException
{
AuthyApiClient authyApiClient = new AuthyApiClient("<apiClient>");
Params params = new Params();
params.setAttribute("code_length", "6");
Verification verification = authyApiClient
.getPhoneVerification()
.start(phoneNumber, countryCode, via, params);
if (verification.isOk())
{
return "{ \"success\": \"Successfully sent verification code.\" }";
}
return "{ \"error\": \"Error sending code.\" }";
}
}
А вот мой тест:
@RunWith(MockitoJUnitRunner.class)
public class TwilioVerifyServiceTests {
@InjectMocks
TwilioVerifyService twilioVerifyService;
@Mock
Verification verification;
@Test
public void requestCodeTest_success() throws AuthyException
{
String phoneNumber = "1111111111";
String countryCode = "1";
String via = "1";
when(verification.isOk()).thenReturn(true);
String result = twilioVerifyService.requestCode(phoneNumber, countryCode, via);
System.out.println(result);
}
}
Я верю, что я(или хотите быть) насмешливым verification.isOk()
, чтобы вернуть true независимо от входных данных, но, похоже, возвращает ложь, предоставляя "{ "error": "Error sending code." }"
вместо "{ \"success\": \"Successfully sent verification code.\" }"
.
Еще раз спасибо за ваше время!