Ruby on rails 测试超控装置控制器–&引用;“没有路线匹配”;
我运行了Ruby on rails 测试超控装置控制器–&引用;“没有路线匹配”;,ruby-on-rails,devise,Ruby On Rails,Devise,我运行了rails g designe:controllers用户,我的路线看起来像 devise_for :users, controllers: { sessions: 'sessions' } 我有一个app/controllers/users/sessions\u controller要测试。我的路线如下: $ rake routes Prefix Verb URI Pattern Controller#Acti
rails g designe:controllers用户
,我的路线看起来像
devise_for :users, controllers: {
sessions: 'sessions'
}
我有一个app/controllers/users/sessions\u controller
要测试。我的路线如下:
$ rake routes
Prefix Verb URI Pattern Controller#Action
new_user_session GET /users/sign_in(.:format) sessions#new
user_session POST /users/sign_in(.:format) sessions#create
我的测试设置如下:
# test/controllers/users/sessions_controller_test.rb
require 'test_helper'
class SessionsControllerTest < ActionController::TestCase
tests Users::SessionsController
test "sign in sanity check" do
user = users(:one)
post :create, email: user.email, password: 'password'
assert_response :success
end
end
如何正确地发布到所需的URL?我尝试了各种各样的变化,但我缺少了一些神奇的调味汁。将您的路线更改为.rb
devise_for :users, controllers: {
sessions: 'users/sessions'
}
在你的测试中,确保你有
class SessionsControllerTest < ActionController::TestCase
tests Users::SessionsController
include Devise::TestHelpers
test "sign in sanity check" do
request.env["devise.mapping"] = Devise.mappings[:user]
user = users(:one)
post :create, email: user.email, password: 'password'
assert_response :success
end
end
class SessionControllerTest
(你可以举个例子。)
class SessionsControllerTest < ActionController::TestCase
tests Users::SessionsController
include Devise::TestHelpers
test "sign in sanity check" do
request.env["devise.mapping"] = Devise.mappings[:user]
user = users(:one)
post :create, email: user.email, password: 'password'
assert_response :success
end
end