Posso substituir a resposta “HttpResponseException” padrão de RESTClient para> 399 códigos de retorno?

Estou usando o GroovyRESTClient classe para fazer escrever alguns (spock) Testes de aceitação para Java WebServices Eu fui autoria.

Uma frustração que tive foi testar as respostas ...

200 Os status são fáceis:

when:  def result = callServiceWithValidParams()
then:  result.status == 200

Mas com400+ Eu sou forçado a enrolar em umtry-catchou teste para oHttpResponseException naquelaRESTClient lança por padrão.

when:
    callWithInvalidParams()
then:
    def e = thrown(Exception)
    e.message == 'Bad Request'

Isso é meio que OK, se é um pouco frustrante ... mas eu quero fazer melhor.

Idealmente, quero que meus testes se assemelhem mais a isso (pode ser confuso se você não usa 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
}

No exemplo acima, o caso 'Pedido incorreto' falha. Em vez de retornar um valor,restClient.get() lançaHttpResponseException

questionAnswers(3)

yourAnswerToTheQuestion