用水豚测量cancan和视图

时间:2012-06-28 23:31:20

标签: ruby-on-rails ruby-on-rails-3 testing capybara cancan

对不起我的英语,我在测试与水豚的观点时遇到了问题。 Capybara无法查看使用cancan验证的元素,我在测试中有这个,以模拟用户拥有所有权限。

before(:each) do
  permission = FactoryGirl.create(:permission)
  role = FactoryGirl.build(:role)
  role.permissions << permission
  role.save
  user = FactoryGirl.create(:user, :role_id => role.id)
  sign_in user
end

这在我看来......

= link_to t('actions.new'), new_user_path if can?(:create, User)

但是我的测试没有通过

 Failure/Error: click_link t('actions.new')
 Capybara::ElementNotFound:
   no link with title, id or text 'Crear nuev@' found
 # (eval):2:in `click_link'
 # ./spec/views/users_spec.rb:53:in `block (3 levels) in <top (required)>'

我不明白,我的控制器没有问题。

一些帮助?

提前致谢,问候......

1 个答案:

答案 0 :(得分:0)

我从未尝试过将水豚用于国际化,但我可以想象你可能遇到一些问题。

我会遵循@ phoet的建议并在您的链接中使用ID而不是翻译的链接文本。 Capybara的click_link将查找ID或链接文本。

# add ID to link in view
= link_to(t('actions.new'), new_user_path, :id => 'actions_new') if can?(:create, User)

# in test file
click_link 'actions_new'