Rails应用程序:测试重定向不会路由到它应该在测试中的位置,而是在生活中

时间:2016-04-25 16:14:46

标签: ruby-on-rails-4 minitest

我已经设置了我的应用程序,以便在登录使用时,它将跳过欢迎页面并重定向用户。这在欢迎控制器中完成:

  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

原因是我不必重新编程根在每个控制器中重定向的位置,因为当你路由到根时处理了。然而,测试似乎没有在这上面。

如何让测试确认重定向而无需将其重新编程到每个控制器中?

0 个答案:

没有答案