我遵循了Devise github页面的建议:
现在这很有效,但是你现在如何测试你有这种行为?
答案 0 :(得分:4)
通过在继承应用程序控制器的控制器中编写测试,有两种方法可以在单元级别对其进行测试。代码看起来像
it "should redirect to page_x after logged in" do
sign_in :user_role, @user
set_devise_mapping(:user_role)
get :new
response.should redirect_to(user_roles_dashboard_path)
end
对于黄瓜,您应该写一个步骤来进行登录并断言如果您在sign_in页面之后处于预期状态。
答案 1 :(得分:3)
嗯......我认为你应该编写自己的集成测试来检查行为。如果您没有使用Devise代码,则无需进行单元测试或功能测试。
答案 2 :(得分:0)
如果您只是在使用迷你测试,那就是这样的:
require 'test_helper'
class SessionsControllerTest < ActionDispatch::IntegrationTest
include Devise::Test::IntegrationHelpers
test "admins should be redirected to comments_url" do
sign_in(users(:one))
post user_session_url
assert_redirected_to comments_url
end
test "No admins should be redirected to root_path" do
sign_in(users(:two))
post user_session_url
assert_redirected_to root_url
end
end