2016-07-17 4 views
31

मैं रेल 5 का उपयोग कर रहा हूं, और डेविस 3.5.1।मेरा आरएसपीईसी क्यों लोड नहीं कर रहा है :: टेस्ट :: कंट्रोलर हेल्पर?

एक एपीआई बनाने/परीक्षण करने के बारे में एक अच्छी (पुरानी) किताब के माध्यम से जाना, जो डेविस प्रमाणीकरण का उपयोग करता है। यह रेल 5 से पहले लिखा गया था, इसलिए मैंने नए एपीआई-केवल संस्करण का उपयोग नहीं करना चुना।

यहाँ मेरी परीक्षा है ...

#/spec/controllers/api/v1/users_controller_spec.rb  

require 'rails_helper' 

describe Api::V1::UsersController, :type => :controller do 
    before(:each) { request.headers['Accept'] = "application/vnd.marketplace.v1" } 
    describe "GET #show" do 
     before(:each) do 
      @user = FactoryGirl.create :user 
      get :show, params: {id: @user.id}, format: :json 
     end 
     it "returns the information about a reporter on a hash" do 
      user_response = JSON.parse(response.body, symbolize_names: true) 
      expect(user_response[:email]).to eql @user.email 
     end 
     it { should respond_with 200 } 
    end 
end 

और यहाँ एक पूरी तरह से अप्रत्याशित RSpec त्रुटि

Devise::MissingWarden: 
     Devise could not find the `Warden::Proxy` instance on your request environment. 
     Make sure that your application is loading Devise and Warden as expected and that the `Warden::Manager` middleware is present in your middleware stack. 
     If you are seeing this on one of your tests, ensure that your tests are either executing the Rails middleware stack or that your tests are using the `Devise::Test::ControllerHelpers` module to inject the `request.env['warden']` object for you. 

है तो मैं यहाँ जाना - http://www.rubydoc.info/gems/devise/Devise/Test/ControllerHelpers

और करने की कोशिश की इस ->वसीयत में शामिल हैं: : टेस्ट :: कंट्रोलर हेल्पर

जिसने मदद नहीं की क्योंकि फ़ाइल controller_helpers.rb मेरी परियोजना में कहीं भी नहीं है

मुझे यहां क्या याद आया?

धन्यवाद

उत्तर

71

आप अपने rails_helper के लिए निम्न जोड़ सकते हैं:

RSpec.configure do |config| 
    config.include Devise::Test::ControllerHelpers, type: :controller 
end 

यह सब :controller चश्मा में Devise::Test::ControllerHelpers मॉड्यूल शामिल होंगे।

+0

ठीक है कि समझ में आता है। धन्यवाद महोदय। प्रकार:: नियंत्रक बस स्मृति को सहेजने के लिए है जब आरएसपीसी अन्य प्रकार के परीक्षण चला रहा है? – dwilbank

+3

'डेविस :: टेस्ट :: कंट्रोलरहेल्पर' का उद्देश्य केवल नियंत्रक परीक्षणों में उपयोग किया जाना है, इसलिए मुझे लगता है कि अगर उनमें से सभी में शामिल किया गया है तो कुछ अन्य चश्मे तोड़ दिए जा सकते हैं। यही कारण है कि हमें 'टाइप:: नियंत्रक' निर्दिष्ट करने की आवश्यकता है। – lest

9

spec_helper.rb ऐड में:

config.include Devise::Test::ControllerHelpers, :type => :controller 
+0

यह उन लोगों के लिए सहायक भी है जो आरएसपीईसी का उपयोग नहीं कर रहे हैं। भविष्य में पढ़ने वाले लोगों के लिए +1 – Fuser97381

+0

- यदि आप रेल का उपयोग कर रहे हैं - इसे अपने rails_helper में डालने पर विचार करें। – BKSpurgeon

संबंधित मुद्दे