在带有rubycas的水豚的RoutingError

时间:2011-12-19 01:11:22

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

我正在将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)重定向到rubycas服务器以登录(在启动时具有/ login上下文),之后它再次将我重定向到我的服务器。 我该怎么做才能查看登录页面或如何在capybara中维护重定向引用?

2 个答案:

答案 0 :(得分: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,这样的参数。 因此它抱怨缺少路线。

  • 检查测试日志

答案 1 :(得分:0)

确保添加了正确的匹配路线。你似乎错过了路线。

我希望这会对你有所帮助。

对于写作路线,您可以从http://railscasts.com/episodes/79-generate-named-routes

获得帮助