2015-10-17 10 views
5

Variants dieser Frage wurden mehrmals gestellt, aber die meisten von ihnen beschäftigen sich mit Mokka und ich verwende es nicht. Ich bin ein Neuling auf Schienen, also mag das trivial erscheinen, aber ich bin nicht in der Lage, in meiner Spezifikationsdatei (die für einen Controller Wettbewerbe genannt) zu spielen.NoMethodError: undefined Methode `Mock 'für # <RSpec :: ExampleGroups :: CompetitionsController :: Erstellen>

require 'rails_helper' 
    require 'spec_helper' 

    describe CompetitionsController do 
    before :each do 
     @fake_c = mock(Competition, :competition_id => 1, :competition_name => 'one', :competition_des => 'any') 
    end 
    describe 'create' do 
     it 'should create new competition' do 
     #CompetitionsController.stub(:create).and_return(mock('Competition')) 
     #post :create, {:id=>"1"} 
     end 
    end 
    end 

Ich bin bei der Mock-Methode fest, nur so habe ich nicht viel mehr geschrieben. Meine spec_helper Datei hat folgenden Inhalt

ENV["RAILS_ENV"] ||= 'test' 
require 'simplecov' 
SimpleCov.start 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 

RSpec.configure do |config| 
    # rspec-expectations config goes here. You can use an alternate 
    # assertion/expectation library such as wrong or the stdlib/minitest 
    # assertions if you prefer. 
    config.expect_with :rspec do |expectations| 
    # This option will default to `true` in RSpec 4. It makes the `description` 
    # and `failure_message` of custom matchers include text for helper methods 
    # defined using `chain`, e.g.: 
    #  be_bigger_than(2).and_smaller_than(4).description 
    #  # => "be bigger than 2 and smaller than 4" 
    # ...rather than: 
    #  # => "be bigger than 2" 
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true 
    end 

    # rspec-mocks config goes here. You can use an alternate test double 
    # library (such as bogus or mocha) by changing the `mock_with` option here. 
    config.mock_with :rspec do |mocks| 
    # Prevents you from mocking or stubbing a method that does not exist on 
    # a real object. This is generally recommended, and will default to 
    # `true` in RSpec 4. 
    mocks.verify_partial_doubles = true 
    end 
end 

I Rubin Version 2.2.1 verwenden und Schienen 4.2.1

Antwort

8

Verwenden Doppel statt Mock, das sollte fixieren Sie Ihre ausgabe:

before :each do 
    @fake_c = double('Competition', :competition_id => 1, :competition_name => 'one', :competition_des => 'any') 
end 
+1

ja es tut. Ist die Verwendung von Mock veraltet? – Pukki

+0

Offenbar, ja, 'stub' und' mock' sind veraltet. Sehen Sie diese PR: https://github.com/rspec/rspec-mocks/pull/233/files –

+0

Oh ja, ich habe vergessen. Danke – Pukki

Verwandte Themen