ruby on rails - आरएसपीसी और टेस्ट हेल्पर्स तैयार करें




ruby-on-rails ruby-on-rails-3 (3)

इसके अनुसार विकी विकी से मैं अपने नियंत्रक परीक्षणों में एक लॉगिन_उसर सहायक विधि का उपयोग करने में सक्षम होना चाहिए। तदनुसार, मैं निम्नलिखित विशिष्ट निर्देशिका के भीतर है:

#spec_helper.rb
...
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
  config.extend ControllerMacros, :type => :controller
...

तथा

#support/controller_macros.rb
module ControllerMacros    
  def login_user
    before(:each) do
      @request.env["devise.mapping"] = Devise.mappings[:user]
      @user = Factory.create(:user)
      sign_in @user
    end
  end
end

हालांकि हेल्पर को कॉल करना काम नहीं करता है:

#requests/some_spec.rb
require 'spec_helper'
describe "GET /guides/edit" do
  login_user     
end

कोई कह सकता है कि मैं गलत कहां रहा हूं। परीक्षण सूट इस बारे में काम करता है मुझे एक अपरिभाषित स्थानीय चर या विधि संदेश मिलता है, इसलिए मुझे लगता है कि मॉड्यूल शामिल नहीं किया जा रहा है।

रेल 3.0.7 आरएसपीसी 2.6.0 डिसेज 1.3.4

पश्व-अनुरेखन


मैं निश्चित रूप से जवाब नहीं दे सकता ... लेकिन मेरे लिए कोड गंध "सहायक से पहले" ("प्रत्येक)" परिभाषित किया गया है आप कोशिश क्यों नहीं करते हैं:

#support/controller_macros.rb
module ControllerMacros    
  def login_user
    @request.env["devise.mapping"] = Devise.mappings[:user]
    @user = Factory.create(:user)
    sign_in @user
  end
end

तथा

#requests/some_spec.rb
require 'spec_helper'
describe "GET /guides/edit" do
  before(:each) do
    login_user     
  end
end

और अगर वह विफल हो जाता है - हो सकता है कि उसे @ अनुरोध नहीं मिल पाया - जो उस मामले में, इसे login_user के लिए एक चर के रूप में पास करें

संपादित करें:

ऐसा लगता है कि आपको डिवेल टेस्ट हेल्पर्स शामिल करने की आवश्यकता हो सकती है Rdoc का कहना है कि आपको यह फाइल होना चाहिए:

# spec/support/devise.rb
RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end

निश्चित नहीं है कि क्या यह अलग है कि कैसे आप spec_helper.rb में पहले से ही मिल चुके हैं ... मेरे जैसा दिखता है


मुझे रेल 3.0 के साथ एक ही समस्या है .10 rspec 2.6.0 मेरे नियंत्रक चश्मे पर 1.3.4 स्पार्क-0.9.0.आरसी 9 बनाना, मैंने config. extend को बदल दिया है I config.include और इसके काम config. extend लिए config. extend !


मुझे लगता है कि इस दृष्टिकोण के साथ कुछ समस्याएं हैं सबसे पहले यह है कि आप login_user का इस्तेमाल कर रहे हैं, नियंत्रक ऐनक नहीं, इसलिए login_user विधि config.extend ControllerMacros, :type => :controller द्वारा उपलब्ध नहीं है config.extend ControllerMacros, :type => :controller । दूसरा, भले ही आप इस विधि को शामिल करने में सक्षम हों, यह सबसे अधिक संभावना वैसे भी काम नहीं करेगा, क्योंकि डिवीज़ टेस्ट हेल्पर्स विशेष रूप से नियंत्रक / दृश्य परीक्षणों के लिए लिखे गए हैं, एकीकरण परीक्षण नहीं।

डेविड चेमिस्की के इस प्रश्न के उत्तर पर एक नज़र डालें, जो मदद का हो सकता है







devise