Так что я пытаюсь проверить следующий метод генерирует исключение, когда что StatusCode 401:тест Спока не устанавливает значения возврата правильно
HttpEntity doGet(HttpGet httpGet) {
# other stuff...
HttpResponse response = this.httpClient.execute(httpGet); // LINE 3
int statusCode = response.getStatusLine().getStatusCode(); // LINE 4
if (statusCode == 401) {
throw new ApiClientException(401, "Recheck your login username & password credentials in the " +
"file Configurations.groovy as they are NOT working.");
}
# other stuff...
}
Я использую рамки тестирования Спок, где вы можете использовать " >> ", чтобы указать возвращаемое значение метода для объекта. Поэтому, когда вызывается код response.getStatusLine().getStatusCode()
, я хочу контролировать, что он возвращает 401 на LINE 4 выше.
Я пытаюсь сделать это на линии 18 & 19 в следующем тесте, но он не работает:
def "test doGet(HttpGet httpGet) throws the correct exceptions when given unsuccessful HttpGet instance"() {
given:
def httpGet = new HttpGet("http://sand.api.appnexus.com/member?id=1196");
def httpClient = Stub(HttpClient);
this.apiClient.httpClient = httpClient;
def httpResponseWithStatusCode401 = Stub(HttpResponse);
httpClient.execute(httpGet) >> httpResponseWithStatusCode401; # LINE 18 This response is correctly returning
httpResponseWithStatusCode401.getStatusLine().getStatusCode() >> 401; # LINE 19 this is never returning 401 right now and always 0 instead
when:
ApiClientException expectedException;
try {
this.apiClient.doGet(httpGet);
} catch(ApiClientException expected) {
expectedException = expected;
}
then:
expectedException.getMessage().equals("Recheck your login username & password credentials in the " +
"file Configurations.groovy as they are NOT working.");
}
ВОПРОС: Как я сделать линию 4 вернуть то, что я хочу в моем тесте на ЛИНИЙ 19?
'httpResponseWithStatusCode401' никогда не используется нигде (похоже, что укорачивание' httpClient.execute' отсутствует). Кроме того, строка 18 не является макетным ожиданием (она не имеет '*' или '>>'), она вызывает макет-объект (что, вероятно, не то, что вы хотите). –
@PeterNiederwieser Большое спасибо за ответ на мой вопрос. Я обновил свой вопрос с помощью Stubs и у меня возникли проблемы с ответом на возврат 401. Не могли бы вы взглянуть? –
@PeterNiederwieser Также я только что проверил ваш профиль и заметил, что вы были создателем Спока и работали в Gradle. Это восхитительно! Мне нравится использовать Спок и Грейдл! –