我在Rails 3应用程序中有一条可以工作(识别,可以跟随它)的路由,但在Cucumber测试中失败了:
routes.rb中:
resources :tests do
member do
post 'start'
end
end
申请中的工作链接:
=button_to 'Start', start_test_path(@test)
Gherkin步骤:
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"'
有什么想法吗?谢谢!
答案 0 :(得分:2)
原因是“开始”是post
操作,而不是get
操作。当您使用I am on the ...
黄瓜步骤时,您将生成获取请求,而不是发布请求。要解决此问题,只需按下黄瓜中的按钮,而不是访问直接路径。这可以通过press
黄瓜步骤完成,如下所示:
When I press "Start"
此步骤将生成相应的post请求,但必须在访问该按钮所在的页面后调用它。或者,您可以通过执行以下操作在自定义黄瓜步骤中生成发布请求:
When /^I am on the test start page$/ do
post("/tests/1/start")
end
答案 1 :(得分:1)
我不懂黄瓜,但试试这个:
将您的路线从test
重命名为tests
,将您的路线从TestController
重命名为TestsController
这可能是您的命名约定搞乱的情况,因为它们不是Rails所期望的。
我不知道我是对的 - 只是一个猜测。