我正在将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中维护重定向引用?
答案 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
获得帮助