2011-12-19 61 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