Ruby on rails 使用水豚进行cancan和views测试

Ruby on rails 使用水豚进行cancan和views测试,ruby-on-rails,ruby-on-rails-3,testing,capybara,cancan,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.creat

对不起,我的英语,我在用水豚测试视图时遇到问题。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
但是我的考试不及格

 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)>'
失败/错误:单击链接t('actions.new')
Capybara::ElementNotFound:
找不到标题、id或文本为“Crear nuev@”的链接
#(评估):2:在“点击链接”中
#./spec/views/users_spec.rb:53:in'block(3层)in'
我不明白,我的控制器没有问题

要帮忙吗


提前感谢,关于…

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

我会按照@phoet的建议,在你的链接中使用ID,而不是翻译的链接文本。水豚的
点击链接将查找ID或链接文本

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


不要使用链接文本,使用ID!我使用了ID,但不起作用:/I我注意到,没有必要将权限分配给当前用户来测试控制器,就像拥有所有权限一样,尽管没有指定(当然,我的控制器有限制)
# 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'