2016-03-24 6 views
2

Ich habe eine Website für den Status-Code getestet werden, Verwenden Sie Curl-Befehl, um den Statuscode der Website zu erhalten. Manchmal gibt es 200 und 302 Statuscodes. Ich verwende Serverspec, um den Statuscode der Website zu testen. Da ich 2 Statuscode bekomme, möchte ich 'oder' Bedingung verwenden, um es zu erledigen. Wie könnte ich es verwenden. Hier ist mein Serverspec-Testfall.Wie in Serverspec verwenden oder konditionieren?

describe command('curl -IL --retry 4 "www.example.com"') do 
    its(:stdout) { should match '200' or '302' } 
end 

Dieser gibt Fehler für mich.

Antwort

4

Ich habe noch nie eine oder in Serverspec gesehen. Aber vielleicht nur im Befehl selbst lösen:

describe command('curl -sL -w "%{http_code}\\n" "www.example.com" -o /dev/null | sed "s/200/OK/" | sed "s/302/OK/"') do 
    its(:stdout) { should match 'OK' } 
end 
+0

es ist nicht "302 OK", aber es ist "302 nicht gefunden". Dies ist, wie es "HTTP/1.1 302 Found" oder "HTTP/1.1 200 OK" gibt, kann nicht sicher sein, wenn wir diese zwei bekommen –

+0

Achten Sie auf den Befehl. curl output ist NUR der Statuscode, der später ** durch ** "OK" ersetzt wird, wenn er 200 oder 302 war. OK steht überhaupt nicht für die Bedeutung eines Statuscodes. – udondan

+0

Danke .. es funktioniert für mich –

Verwandte Themen