Я использую класс Groovy RESTClient для написания некоторых (спотов) приемочных тестов для Java WebServices. Я был авторинга.
Одно разочарование, которое я испытывал, заключается в тестировании ответов...
200
Статус прост:
when: def result = callServiceWithValidParams()
then: result.status == 200
Но с 400+
я вынужден либо обернуть в try-catch
, либо проверить для HttpResponseException
, что по умолчанию RESTClient
.
when:
callWithInvalidParams()
then:
def e = thrown(Exception)
e.message == 'Bad Request'
Это вроде ОК, если немного расстраивает... но я хочу сделать лучше.
В идеале я хочу, чтобы мои тесты больше напоминали это (может быть запутанным, если вы не используете groovy/spock)
@Unroll
def "should return #statusCode '#status' Response"()
{
when:
def result = restClient.get(path: PATH, query: [param: parameter])
then:
result.status == statusCode
where:
status | statusCode | parameter
'OK' | 200 | validParam
'Bad Request' | 400 | invalidParam
}
В приведенном выше примере случай "плохого запроса" терпит неудачу. Вместо того, чтобы возвращать значение, restClient.get()
throws HttpResponseException