我已经设置了我的应用程序,以便在登录使用时,它将跳过欢迎页面并重定向用户。这在欢迎控制器中完成:
def show
if logged_in?
redirect_to myrecipes_url
else
render template: "welcome/home"
end
end
我写了以下测试:
这个失败了:
test "login with valid information" do
get login_path
post login_path, session: { email: @user.email, password: 'password' }
assert_redirected_to myrecipes_url
end
我收到以下错误:
FAIL["test_login_with_valid_information", UsersLoginTest, 1.4506160049932078]
test_login_with_valid_information#UsersLoginTest (1.45s)
Expected response to be a redirect to <http://www.example.com/myrecipes> but was a redirect to <http://www.example.com/>.
Expected "http://www.example.com/myrecipes" to be === "http://www.example.com/".
该测试通过了类似的测试。
test 'welcome page gets skipped when logged in' do
log_in_as(@user)
get root_path
assert_redirected_to myrecipes_url
end
当我的控制器(帐户激活,密码重置,会话)用户应该登录时,我开始发生这种情况,我决定更改代码行:redirect_to myrecipes_url to redirect_to root_url
原因是我不必重新编程根在每个控制器中重定向的位置,因为当你路由到根时处理了。然而,测试似乎没有在这上面。
如何让测试确认重定向而无需将其重新编程到每个控制器中?