2014-03-04 9 views
6

ich einen Testfall wie dieses:nicht definierte Methode instance_double für RSpec :: Mocks :: ExampleMethods

describe WorkCardsController do 
    it "something" do 
     work_card = instance_double(WorkCard, {:started?=>true}) 
     #some more code 
    end 
end 

Wenn ich RSpec laufen lasse, erhalte ich eine Fehlermeldung:

undefined method 'instance_double' for #<Rspec::Core::ExampleGroup::Nested_1::Nested_8::Nested_3:0x007f0788b98778> 

Nach http://rubydoc.info/github/rspec/rspec-mocks/RSpec/Mocks/ExampleMethods dieser Methode existiert. Also habe ich versucht, darauf zuzugreifen direkt von:

describe WorkCardsController do 
    it "something" do 
     work_card = RSpec::Mocks::ExampleMethods::instance_double(WorkCard, {:started?=>true}) 
     #some more code 
    end 
end 

Und dann bekam ich ein sehr überraschenden Fehler:

undefined method 'instance_double' for Rspec::Mocks::ExampleMEthods:Module 

, die in die Dokumentation verstoßen ich oben verlinkt.

Was fehlt mir?

+0

Sind Sie sicher, rspec3 zu haben? Die Gem-Version in diesem Moment ist 2.14, also, wenn Sie es nicht von github installiert haben, ist es normal, dass diese Methode nicht existiert. – Iazel

Antwort

1

Aus der Dokumentation, die Sie zeigte:

Mix this in to your test context (such as a test framework base class) to use rspec-mocks with your test framework.

zu include Versuchen Sie es in Ihren Code:

include RSpec::Mocks::ExampleMethods 

Ihr direkter Ansatz gescheitert, weil

RSpec::Mocks::ExampleMethods::instance_double(...) 

Aufruf erwartet, dass die Methode wurde als Klassenmethode deklariert:

def self.instance_double(...) 

aber es wurde als eine Instanz Methode deklariert:

def instance_double(...) 
Verwandte Themen