【问题标题】:RoutingError on capybara with rubycasrubycas 在水豚上的路由错误
【发布时间】:2011-12-19 01:11:21
【问题描述】:

我正在将 capybara 集成到一个项目中。起初,我只是想检查显示登录页面的内容,所以我编写了以下代码:

require 'acceptance/acceptance_helper'
feature 'Login' do
  scenario 'sign in with right credentials' do
    visit '/'
    save_and_open_page
  end
end

但是当我运行测试时,它会告诉我:

 Failure/Error: visit '/'
 ActionController::RoutingError:
   No route matches "/login"
 # ./spec/acceptance/login_spec.rb:6

如果我在没有有效会话的情况下进入应用程序,它会将我(代码 302)重定向到 ruby​​cas 服务器以让我登录(启动时具有 /login 上下文),然后再次将我重定向到我的服务器。 我应该怎么做才能只查看登录页面或如何维护水豚中的重定向引用?

【问题讨论】:

    标签: ruby-on-rails-3 rspec2 capybara rubycas


    【解决方案1】:

    我通常这样做:

    在我的 test.rb 中:

        require 'casclient'
      require 'casclient/frameworks/rails/filter'
    
      CASClient::Frameworks::Rails::Filter.configure(
          :cas_base_url => cas_base_url
      )
    

    像这样修改你的规范:

    CASClient::Frameworks::Rails::Filter.fake(username)
      visit '/'
    

    让我知道这是否适合你。

    ================================================ ====================================

    如果不使用“CASClient::Frameworks::Rails::Filter.fake(username)”,我也会遇到同样的错误。 原因是 cas 使用“/login?service=http%3A%2d%2Fwww.example.com%aF”这样的参数将您重定向到其基本 URL。 因此它抱怨错过了路线。

    • 检查您的测试日志

    【讨论】:

      【解决方案2】:

      确保您添加了正确的匹配路线。看来你错过了路线。

      希望对你有帮助。

      要编写路线,您可以从http://railscasts.com/episodes/79-generate-named-routes获得帮助

      【讨论】:

      • 但是 '/login' 不是我的应用程序上的有效路由,它是位于另一个应用程序和地址中的身份验证系统 (rubycas-sever) 的路由。例如,如果我进入我的应用程序 (localhost:3000) 并且我没有会话,它会立即将我重定向到身份验证服务器 (authserver.com/login?...) 所以这是登录页面,在我登录后它会重定向我再次访问本地主机。为什么要在我的应用程序中添加“/login”作为有效路由?
      • 你要确定的是,水豚不要填写不属于它的字段,例如,你正在访问一个远程页面 facebook 并输入填写然后它不会工作。您必须在本地主机而不是其他网站上运行测试用例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多