मैं वर्तमान में आरएसपीईसी के साथ एक कस्टम डिवाइस सत्र नियंत्रक का परीक्षण करने की कोशिश कर रहा हूं। मेरे नियंत्रक इस तरह दिखता है:कस्टम डिवाइस सत्र नियंत्रक का आरएसपीसी परीक्षण सार नियंत्रक के साथ विफल रहता है :: एक्शन नॉटफाउंड
class SessionsController < Devise::SessionsController
def create
#valid email?
if !(params[:email] =~ /^[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)
set_flash_message :notice, "Please enter a valid e-mail address!"
end
super
end
end
मेरे RSpec नियंत्रक टेस्ट यह है:
require 'spec_helper'
require 'devise/test_helpers'
describe SessionsController do
it "should put a warning on invalid mail address login attempt" do
post :create, :user => {:email => 'invalidEmailAddress'}
response.should contain "Please enter a valid e-mail address!"
end
it "should put no warning on valid mail address login attempt" do
pending
end
end
अगर मैं RSpec टेस्ट पर अमल यह निम्न पंक्ति के साथ विफल:
Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
AbstractController::ActionNotFound
# ./spec/controllers/sessions_controller_spec.rb:7
से टिप्स plataformatec डेविस विकी के साथ-साथ this post इस समस्या को हल नहीं किया। आपकी सहायता के लिए धन्यवाद.
अलावा
मैं आगे की जांच की। मैं वास्तव में नियंत्रक कल्पना के लिए निम्न अलावा के साथ त्रुटि "निकालें" करने में सक्षम था:
before(:each) do
request.env['devise.mapping'] = Devise.mappings[:user]
end
लेकिन अब एक नया त्रुटि दिखाई देती है:
Failure/Error: post :create #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
यहां तक कि के साथ बनाने के विधि इनहेरीट में बाहर छोड़ दिया नियंत्रक त्रुटि प्रकट होता है। त्रुटि प्राप्त करने पर प्रकट नहीं होती है: उदाहरण के लिए नया। ऐसा लगता है कि पोस्ट: केवल बनाएं। मैं विचारों से बाहर हूं? कोई मदद? धन्यवाद!
'रेंडर' दृश्य चश्मे के लिए है - यह नियंत्रक चश्मा में समझ में नहीं आता है, जो डिफ़ॉल्ट रूप से विचार प्रस्तुत नहीं करता है। यदि आप परीक्षण नियंत्रक को प्रतिपादन करना चाहते हैं तो एक 'render_views' निर्देश है (जो पुराने "integrate_views" को प्रतिस्थापित करता है)। – zetetic
ठीक है, आप सही हैं। लेकिन स्पष्ट प्रस्तुत किए बिना भी त्रुटि उत्पन्न होती है। मेरे पुराने कोड में रेंडर कभी नहीं पहुंचा था। – kaihowl
आपके उत्तर के लिए धन्यवाद। मैंने आपके सुझावों की कोशिश की, लेकिन उनमें से कोई भी मेरे लिए काम नहीं किया। अफसोस की बात है, वही त्रुटियां खत्म होती हैं। – kaihowl