Rspec any_instance.stub löst die undefinierte Methode 'any_instance_recorder_for' für nil: NilClass-Ausnahme aus

8

Hier ist die Klasse, die ich getestet habe, enthalten in Foo.rb :

%Vor%

Hier ist mein Test in Foo_spec.rb :

%Vor%

Ich bekomme folgende Ausgabe:

%Vor%

Ich habe the doc und das Beispiel gibt mein Gerät weiter (es ist also kein Problem mit dem rspec-Code), aber es gibt mir keine Informationen darüber, was ich falsch machen könnte . Die Fehlermeldung ist auch ziemlich verwirrend, da sie mir sagt, ich solle .any_instance nicht auf einem nil:NilClass aufrufen, aber wie ich mit meiner Ausgabe bewiesen habe, ist Foo nicht nil . Wie soll ich .any_instance.stub für mein benutzerdefiniertes Objekt aufrufen?

Ich verwende Ruby 1.9.3 und rspec 2.14.5 .

    
Seanny123 11.09.2013, 11:33
quelle

3 Antworten

27

Sie sollten before(:each) für Stubbing verwenden.

  

Stubs in before(:all) werden nicht unterstützt. Der Grund dafür ist, dass alle Stubs und Mocks nach jedem Beispiel gelöscht werden. Daher würde jeder Stub, der in before(:all) gesetzt ist, im ersten Beispiel funktionieren, das in dieser Gruppe läuft, aber nicht für andere.

rspec-mocks readme

    
valeronm 12.09.2013, 00:12
quelle
2

Ab Rspec 3 ist any_instance nicht mehr definiert.

Verwenden Sie jetzt:

%Vor%

Quelle für diese und ältere Versionen: Ссылка

    
Riiwo 08.02.2017 12:02
quelle
0

Das Aktualisieren von rspec hat für mich funktioniert. Sie können dies mit dem folgenden Befehl tun:

bundle update rspec

    
quelle

Tags und Links