Route在应用程序中工作,在Cucumber测试中失败

时间:2011-05-31 22:45:15

标签: 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)

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"'

有什么想法吗?谢谢!

2 个答案:

答案 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所期望的。

我不知道我是对的 - 只是一个猜测。