2011-05-31 42 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