Ruby on rails 路由在应用中有效,在黄瓜测试中失败

Ruby on rails 路由在应用中有效,在黄瓜测试中失败,ruby-on-rails,routes,cucumber,Ruby On Rails,Routes,Cucumber,我有一条路线在Rails 3应用程序中有效(已识别,可以遵循),但在Cucumber测试中失败: 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" 路径失败。rb when /th

我有一条路线在Rails 3应用程序中有效(已识别,可以遵循),但在Cucumber测试中失败:

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"
路径失败。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"'
when/when为“([^\”]*)”的测试起始页/
开始测试路径(测试。按名称($1)查找)
...
(:)失败的步骤(:)
没有与“/tests/1/start”匹配的路由(ActionController::RoutingError)
:10:在“同步”中
/features/step_definitions/web_steps.rb:30:in`/^(?:| I)am on(+)$/'
功能/测试工作流程。功能:24:in`我在“样本测试”的测试起始页上'

有什么想法吗?谢谢!

我不知道黄瓜,但试试这个:

将路线从
test
重命名为
tests
,将控制器从
TestController
重命名为
testscocontroller

这可能是您的命名约定把事情搞砸的情况,因为它们不是Rails所期望的


我不知道我是否正确-只是一个猜测。

原因是“开始”是一个
post
操作,而不是
get
操作。当你使用
我在…
cumber步骤时,你正在生成一个get请求,而不是post请求。要解决这个问题,只需按下cumber中的按钮,而不是访问直接路径。这可以n使用
步骤完成,如下所示:

When I press "Start"
When /^I am on the test start page$/ do
  post("/tests/1/start")
end
此步骤将生成相应的post请求,但必须在您访问按钮所在的页面后调用。或者,您可以在自定义步骤中生成post请求,方法如下:

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

很好的建议,但不幸的是,我只是从routes.rb错误地复制了路由。其中的“测试”也认为这解决了问题,但我得到了“错误数量的参数(2对1)(ArgumentError)“对于访问方法,我将其更新为使用post方法。试一试。但是你的访问不接受post请求,这是正确的。与此类似,这似乎是一个很好的线索,我需要重新审视我的工作流程。我出轨了