2016-03-24 57 views
2

ile denetleyici sınamalarını çalıştırırken oturum açamıyorum Auth sistemini kapatmak için auth sistemini Michael Hartl's tutorial dan değiştirerek son zamanlarda Devise uygulamasını uygulamanıza yükledim. Uygulamanın kendisinde iyi çalışıyor, ancak testlerimi düzgün bir şekilde alamıyorum, bu yüzden hemen hepsi başarısız oluyor, bu da beni üzüyor. Minitest ile Rails 4 kullanıyorum.Devise/Rails 4/Minitest

learning_resources_controller_test.rb

require 'test_helper' 
class LearningResourcesControllerTest < ActionController::TestCase 

    def setup 
    @user = users(:testuser1) 
    end 

    test "user can submit new resource" do 
    sign_in @user # Devise helper 
    post :create, {:learning_resource => {:name => "My resource"}} 
    resource = assigns(:learning_resource) 
    assert_redirected_to topic_path(@topic1, :learning_resource_created => "true") 
    end 
end 

test_helper.rb

ENV['RAILS_ENV'] ||= 'test' 
require File.expand_path('../../config/environment', __FILE__) 
require 'rails/test_help' 

class ActiveSupport::TestCase 
    fixtures :all 

    # Return true is test user is signed in 
    def is_signed_in? 
    !session[:user_id].nil? 
    end 

    def sign_in_as(user, options = {}) 
    password = options[:password] || 'password' 
    remember_me = options[:remember_me] || '1' 
    if integration_test? 
     # Sign in by posting to the sessions path 
     post signin_path, session: { email:  user.email, 
            password: password, 
            remember_me: remember_me } 
    else 
     # Sign in using the session 
     session[:user_id] = user.id 
    end 
    end 

    private 

    def integration_test? 
     defined?(post_via_redirect) 
    end 

end 

class ActionController::TestCase 
    include Devise::TestHelpers 
end 

fikstürler/users.yml: Burada

başarısız benim denetleyicisi Testlerden birinin bir örnek

testuser1: 
    name: Test User 1 
    email: [email protected] 
    password_digest: <%= User.digest('password') %> 

Testte assert_redirected_to, yönlendirme, konu sayfası yerine sayfadaki oturum olduğu için başarısız olur. Diğer testlerimin tümü, kullanıcının oturum açmamış olduğunu belirten benzer yollarla başarısız oluyor. Devise vikisini ve dokümanlarını inceledim, ancak bunların çoğu Minimalest değil, Rspec ile test edilmeyi kapsıyor.

Ben oturumu kontrol etmek sign_in sonra test içindeki byebug kullanarak çalıştı ve bana böyle: Ben aramaya çalışırsanız

(byebug) session.inspect

{"warden.user.user.key"=>[[336453508], ""]}

: oluşturmak, bu hatayı alıyorum:

DEPRECATION WARNING: ActionDispatch::Response#to_ary no longer performs implicit conversion to an array. Please use response.to_a instead, or a splat like status, headers, body = *response . (called from puts at /Users/me/.rbenv/versions/2.2.2/lib/ruby/2.2.0/forwardable.rb:183) 302 {"X-Frame-Options"=>"SAMEORIGIN", "X-XSS-Protection"=>"1; mode=block", "X-Content-Type-Options"=>"nosniff", "Location"=>" http://test.host/signup ", "Set-Cookie"=>"request_method=POST; path=/", "Content-Type"=>"text/html; charset=utf-8"}

Burada neleri özlediğim hakkında bir fikrin var mı?

cevap

0

hata Bu hiçbir şeyi değiştirmeyecek görünmüyor

post :create, :learning_resource => {:name => "My resource"} 
+0

deneyin karma

post :create, {:learning_resource => {:name => "My resource"}} 

beraberdir. Bu sözdizimi Devise'ye geçmeden önce işe yaradı, bu yüzden geçerli olduğuna eminim. – Wemmick