So testen Sie mit Rspec, dass ein Schlüssel in einem Hash existiert, der ein Array von Hashes enthält

8

Ich habe eine Model-Methode, die bei der Ausführung Folgendes zurückgibt:

%Vor%

Ich möchte testen, ob "Umsatz" im ersten Hash vorhanden ist und dann testen, dass der Wert gleich 600 ist.

%Vor%

Ich bin völlig verloren, wie man das mit Rspec testet.

    
Mark Datoni 27.10.2015, 22:40
quelle

2 Antworten

5
Mit

RSpec können Sie die have_key Prädikat Matcher, um das Vorhandensein eines Schlüssels über has_key? zu validieren, wie folgt:

%Vor%     
Chris Heald 27.10.2015 22:57
quelle
1

Wenn Sie explizit only den ersten Hash in Ihrem Array, der :data zugeordnet ist, testen möchten, geben Sie hier Ihre expect s an, was Sie oben geschrieben haben:

%Vor%

Alternativ können Sie für die zweite Erwartung expect(data).to have_key(:revenue) verwenden, wie Chris Heald in seiner Antwort darauf hingewiesen hat eine viel schönere Fehlermeldung als in den Kommentaren gesehen.

  1. Der erste "Erwartungstest", wenn das Subjekt den ersten Hash hat. (Sie könnten alternativ testen, ob das Array empty? ist)
  2. Die nächste Erwartung besteht darin, zu testen, ob der erste Hash den Schlüssel :revenue hat.
  3. Die letzte Erwartung testet, ob der erste Hashwert :revenue gleich 600
  4. ist

Sie sollten RSpec lesen , es ist ein sehr leistungsfähiges und nützliches Test-Framework.

    
wspurgin 27.10.2015 22:49
quelle

Tags und Links