should_receive in RSpec
-
30-09-2019 - |
Frage
Soweit ich weiß, ist should_receive
nur Mock-Objekte angewendet. Was ich will, ist zu überprüfen, ob eine bestimmte Klasse (nicht Gegenstand) erhielt eine bestimmte Nachricht, wie:
User.should_receive(:all).once
Wie kann ich das tun?
UPD. Üblicherweise Schreiben Test für Modelle und Controller wir können Schreib User.should_receive (: smth) .Sobald. Aber in meinem Fall teste ich eine beliebige Klasse aus dem Ordner lib, und irgendwie immer erhalte ich die folgende Meldung:
<User( [fields] ) (class)> expected :all with (no args) once, but received it 0 times>
Alle Ideen, warum ist das so? Ein Test sieht irgendwie die Benutzerklasse, kann aber nicht, wenn es eine Nachricht empfängt. Natürlich habe ich überprüft zehnmal, dass der Benutzer is tatsächlich eine Nachricht zu bekommen.
Lösung
Ganz einfach:
User.should_receive(:all).once
Was ich will, ist zu überprüfen, ob eine bestimmte Klasse (nicht Gegenstand) erhielt eine bestimmte Nachricht
Eine Klasse is ein Objekt!