2012-03-26 5 views
0

Ich bin auf der Suche nach dem richtigen Weg, um die Präsenz eines Attributs in einer XML-oder JSON-Antwort zu überprüfen. Ich interessiere mich nicht, wenn der Wert null, leer oder ein anderer Wert in der Tat, meine Antwort 3 Zustände für dieses spezielle Attribut enthalten könnte:Wie kann ich mit RSpec nach dem Vorhandensein eines Attributs in XML/JSON suchen?

  • Nicht anwesend bei allen
  • Präsens aber Wert ist nil
  • Gegenwart und Wert ist ein datetime

Also muss ich einen Weg, alle diese Staaten zur Vereinheitlichung und Vereinfachung (weil alle in diesem speziellen Test gültig sind) und fragen nur, wenn das Attribut (last_visit_at) ist Geschenk.
Die gleiche ich tun kann, zu testen, ob es null ist, oder nicht, dh mit JSON:

JSON.parse(response.body).first["last_visit_at"].should_not be_nil 
JSON.parse(response.body).first["last_visit_at"].should be_nil 

Dies funktioniert nicht, wenn der Wert gleich Null ist, offensichtlich (nil reagiert nicht auf entweder #exist oder? #exists):

JSON.parse(response.body).first["last_visit_at"].should exist 

gibt es eine Möglichkeit, dies zu tun, und es könnte für beide, JSON und XML-Antworten gültig? Vielen Dank.

Antwort

6

versuchen diese

JSON.parse(response.body).first.keys.include?("last_visit_at").should be_true 
+3

oder '... keys.should include ('last_visit_at')'. – Brandan

+0

Kühl. Genau das habe ich gebraucht. Danke beiden! – Zheileman

Verwandte Themen