2011-05-31 44 views
1

我有工作(認可,可以按照它)在Rails 3應用程序,但在黃瓜測試失敗的路線:線工程中的應用,無法在黃瓜測試

的routes.rb:

resources :tests do 
    member do 
    post 'start' 
    end 
end 
在應用

工作環節:

=button_to 'Start', start_test_path(@test) 

小黃瓜步:

And I am on the test start page for "Sample Test" 

在paths.rb

when /the test start page for "([^\"]*)"/ 
    start_test_path(Test.find_by_name($1)) 

... 

(::) failed steps (::) 

No route matches "/tests/1/start" (ActionController::RoutingError) 
<internal:prelude>:10:in `synchronize' 
./features/step_definitions/web_steps.rb:30:in `/^(?:|I)am on (.+)$/' 
features/test_workflow.feature:24:in `And I am on the test start page for "Sample Test"' 

任何想法失敗?謝謝!

回答

2

原因是「開始」是一個post操作,而不是一個get操作。當您使用黃瓜步驟I am on the ...時,您正在生成獲取請求,而不是發送請求。要解決這個問題,只需按下Cucumber中的按鈕,而不是訪問直接路徑。這可以通過press黃瓜步驟中完成,像這樣:

When I press "Start" 

這一步會產生相應的崗位要求,但你訪問該按鈕位於頁面後,必須調用。或者,你可以生成一個自定義的黃瓜一步做這樣的事情的POST請求:

When /^I am on the test start page$/ do 
    post("/tests/1/start") 
end 
+0

認爲這解決了它,但我得到了「訪問方法 – 2011-05-31 23:22:14

+0

」錯誤的參數數量(2爲1)(ArgumentError)「我更新它使用post方法。給那一槍。 – 2011-05-31 23:34:03

+0

但是,您在訪問的正確軌道上不接受發佈請求。類似於http://stackoverflow.com/questions/4084212/how-do-you-post-to-a-url-in-cabybara – 2011-05-31 23:34:14

1

我不知道黃瓜,但試試這個:

重命名從test你的路線,tests和你的TestsController

控制器從TestController這也許會是您的命名約定搞亂的東西的情況下,因爲它們不是Rails所期望的。

我不知道我是否正確 - 只是一個猜測。

+0

很好的建議,但不幸的是我剛剛從routes.rb中複製的路徑不正確。它的'測試'在那裏以及 – 2011-05-31 23:12:01