路由在应用程序中有效,但在黄瓜测试中失败

问题描述

我在Rails 3应用程序中有一条可行的路由(已确认,可以遵循),但是在Cucumber测试中失败: route.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\"
在path.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\"\'
有任何想法吗?谢谢!     

解决方法

        原因是\'start \'是
post
动作,而不是
get
动作。当您使用“ 6”黄瓜步骤时,您将生成一个获取请求,而不是发布请求。要解决此问题,只需按Cucumber中的按钮,而不要访问直接路径。这可以通过
press
黄瓜步骤完成,如下所示:
When I press \"Start\"
此步骤将生成适当的发布请求,但是在您访问该按钮所在的页面后必须调用它。或者,您可以通过执行以下操作在自定义的黄瓜步骤中生成发布请求:
When /^I am on the test start page$/ do
  post(\"/tests/1/start\")
end
    ,        我不知道黄瓜,但是试试这个: 将您的路线从
test
重命名为
tests
,控制器从controller12ѭ重命名为
TestsController
在这种情况下,您的命名约定可能会使事情变得混乱,因为它们不是Rails期望的。 我不知道我是否正确-只是一个猜测。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...