2011-12-19 59 views
0

我正在整合水豚到一个项目。在第一种情况下,我只是想检查哪些是显示登录页面,所以我做了这个代码:红宝石水豚的RoutingError

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上下文),之后它将我重新定向到我的服务器。 我应该怎么做才能查看登录页面或如何维护水豚中的重定向引用?

回答

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”这样的参数将您重定向到其基本网址。 因此它关于失踪路线的投诉。

  • 检查测试日志
0

确保您已经添加了正确的匹配路线。看起来你缺少路线。

我希望这可以帮助你。

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

+0

但“/ login”是不是在我的应用程序的有效途径,是位于另一个应用程序和地址认证系统(rubycas-服务器)的一个途径。例如,如果我输入到我的应用程序(http:// localhost:3000),并且我没有会话,它会立即将我重定向到auth服务器(http://www.authserver.com/login?.. 。)所以这里是登录页面,登录后再重定向到localhost。为什么要在我的应用程序中添加'/ login'作为有效路线? – 2011-12-19 22:24:38

+0

onething你可以肯定的是,水豚不会填充字段不是它的一部分,例如,你在远程页面facebook上输入并填写然后它不会工作。您必须在本地主机上而不是其他网站上运行测试用例。 – 2011-12-21 07:22:07