ile rspec ile özel bir Devise oturum denetleyicisini sınamaya çalışıyor. Benim denetleyicisi şöyle görünür:Özel Devise Oturum Denetleyicisinin RSpec Testi, AbstractController :: ActionNotFound
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
My RSpec Denetleyici Testi şudur:
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
ben RSpec Testi yürütmek Eğer aşağıdaki satırla başarısız: den
Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
AbstractController::ActionNotFound
# ./spec/controllers/sessions_controller_spec.rb:7
İpuçları Plataformatec Devise Wiki'nin yanı sıra this post bu sorunu çözmedi. Yardım ettiğin için teşekkür ederim.
Eklenen
I daha da incelendi. Ben kontrolör spec aşağıdaki eklenmesiyle hata "kaldır" aslında başardı:
before(:each) do
request.env['devise.mapping'] = Devise.mappings[:user]
end
Ama şimdi yeni bir hata ortaya çıkıyor:
oluşturmak yöntem miras dışarı bıraktı bile sahipFailure/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".
denetleyici hatası görüntülenir. Hata, get'de görünmüyor: örneğin yeni. Gönderi görünüyor: sadece yarat. Fikirlerim tükendi mi? Herhangi bir yardım? Teşekkürler!
'render', görüntüleme özelliklerini kapsar - varsayılan olarak görünüm oluşturmayan denetleyici özelliklerinde anlam ifade etmez. Test denetleyicisinin işleme koymasını istiyorsanız, bir “render_views” yönergesi vardır (eski "integrate_views" yerine). – zetetic
Tamam, haklısın. Ancak açık bir şekilde oluşturulmasa bile hata oluşur. Render eski koduma hiç ulaşmadı. – kaihowl
Cevabınız için teşekkür ederiz. Önerilerinizi denedim, ama hiçbiri benim için işe yaramadı. Ne yazık ki, aynı hatalar tekrar tekrar ortaya çıkıyor. – kaihowl