如何解决路由在应用程序中有效,但在黄瓜测试中失败
我在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期望的。
我不知道我是否正确-只是一个猜测。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。