Ich benutze die Groovy RESTClient Klasse, um einige (Spock) Akzeptanztests für Java WebServices zu schreiben, die ich geschrieben habe.Kann ich die Antwort von RESTClient "HttpResponseException" auf> 399 Rückgabecodes überschreiben?
Eine Frustration, die ich hatte, um die Antworten zu testen ...
200
Status ist einfach:
when: def result = callServiceWithValidParams()
then: result.status == 200
Aber mit 400+
Ich bin gezwungen, entweder wickeln in einem try-catch
oder Test für die HttpResponseException
, dass RESTClient
standardmäßig wirft.
Das ist in Ordnung, wenn ein wenig frustrierend ... aber ich will es besser machen.
Idealerweise möchte ich meine Tests mehr ähneln diese (könnte verwirrend sein, wenn Sie nicht groovy/spock verwenden Sie)
@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
}
Im obigen Beispiel ist die 'Bad Request' Fall versagt . Statt einen Wert zurückzukehren, wirft restClient.get()
HttpResponseException
Es ist schwer zu verstehen, die Barriere Ihr Gesicht. Kannst du mehr Infos posten? Welcher Typ ist ein Param? Was passiert, wenn Sie versuchen, den Where-Block zum Definieren von Parametern zu verwenden? Wie sieht callService() aus? –
@AlexBlakemore danke für die Antwort. Das Beispiel am Ende soll nur veranschaulichen, wie mir meine ursprüngliche Anfrage helfen könnte. Ich sehe jetzt, dass es etwas verwirrend ist, da ich den RESTClient nicht wirklich zeige. Stellen Sie sich 'callService (params)' als Wrapper um den Client vor, wobei die 'params' -Werte Maps von queryString-Parametern sind, die an den Service gesendet werden sollen. Das alles ist jedoch nicht wirklich wichtig.Der Hauptpunkt ist, dass der RESTService ein 'result' für 200 Antworten zurückgibt, aber einen Fehler für 400, 401, etc ... ausgibt. Daher kann ich die Antwort nicht standardmäßig in meinem 'then:' Block –
bearbeiten Beispiel, um hoffentlich einfacher/klarer zu machen. –