【发布时间】:2012-03-11 15:27:22
【问题描述】:
我在 Rails 3.2 上使用 Capybara/Cucumber,但遇到了奇怪的路由错误。
我定义了以下路线:
#routes.rb
namespace :super_user do
...
resources :events do
resources :invites
end
end
...
resources :invites
以及以下 Cucumber 功能:
@in_progress @current
Scenario: I can invite a USER by email
Given the following event exists:
| Name |
| The Event |
And I go to the event page for "The Event"
And I follow "Invite new user"
And I fill in "invite_email" with "user@domain.com"
...
活动页面 (EventsController#show) 包含指向 invites#new 操作的链接:
#app/views/super_user/events/show.html.erb
...
<%= content_for :button_bar do %>
<%= link_to( 'Invite new user', new_super_user_event_invite_path(@event) ) %>
<% end %>
当我手动测试 /super_user/events/1 操作时,一切正常,但每当我运行 cucumber 时,我都会得到:
And I follow "Invite new user" # features/step_definitions/web_steps.rb:45
uninitialized constant SuperUser::InvitesController (ActionController::RoutingError)
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:46:in `/^(?:|I )follow "([^"]*)"$/'
features/create_casino_super_user.feature:24:in `And I follow "Invite new user"'
为什么使用 Cucumber/Capybara 时路由的行为会有所不同?我该如何修复此功能?
bundle list的相关部分:
* cucumber (1.0.6)
* cucumber-rails (1.0.2)
* capybara (1.0.1)
* capybara-webkit (0.6.1 dfa0624)
* rails (3.2.1)
编辑
旁注:InvitesController 类不在 SuperUser 模块中,但正如我之前所说,它在手动测试时有效。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 cucumber capybara