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 örnektestuser1:
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 useresponse.to_a
instead, or a splat likestatus, 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ı?
deneyin karma
beraberdir. Bu sözdizimi Devise'ye geçmeden önce işe yaradı, bu yüzden geçerli olduğuna eminim. – Wemmick