2016-07-05 47 views
0

這是我的規格文件未按規格:傳遞變量時,測試

require 'rails_helper' 

RSpec.describe Programmes::ReportsController, :type => :controller do 
    let!(:programme) { create(:programme) } 
    context 'authenticated user' do 
    describe 'GET index' do 
     it 'responds with a 200 OK status code' do 
     get :index, params: { id: programme.id } 
     expect(response).to have_http_status(:success) 
     end 
    end 
    end 
end 

這是我廠;

FactoryGirl.define do 
    factory :programme do 
    name { Faker::Lorem.word } 
    description { Faker::Lorem.sentence(3) } 
    end 
end 

這是我的控制器;

class Programmes::ReportsController < ApplicationController 
    def index 
    end 

    def create 
    end 
end 

我似乎無法得到此規範通過。該路線在瀏覽器中正常工作。例如

http://localhost:3000/programmes/{:id}/reports 

我的錯誤是:

Failures: 
1) Programmes::ReportsController authenticated user GET index responds with a 200 OK status code 
    Failure/Error: let!(:programme) { create(:programme) } 
    NoMethodError: 
    undefined method `create' for #<RSpec::ExampleGroups::ProgrammesReportsController::AuthenticatedUser::GETIndex:0x007fac78b1b440> 
    # /Users/mike/.rvm/gems/ruby-2.2.3/gems/actionpack-5.0.0/lib/action_dispatch/testing/assertions/routing.rb:172:in `method_missing' 

我很新的紅寶石(和Rails)。我不認爲是正在FactoryGirl創建的程序對象 - 但我真的不知道如何找出如果這是

+0

您是否確實安裝並配置了'factory_girl' gem? – spickermann

+0

不知道配置,但安裝了'factory_girl(4.7.0)'。 – mikelovelyuk

回答

0

我認爲你需要調用let!(:programme) { FactoryGirl.create(:programme) }

如果你想忽略FactoryGirl的情況下並呼籲create(:programme)代替然後把此行spec_helper.rb或rails_helper.rb

config.include FactoryGirl::Syntax::Methods 
+0

似乎沒有任何區別。我取代了'let!'的東西,並得到了完全相同的錯誤。 – mikelovelyuk

+0

你確定*你有完全相同的錯誤嗎?如果你現在正在調用'FactoryGirl.create',我不希望看到'

0

你有沒有在spec_helper require 'factory_girl'