我正在使用Capybara 2.1.0和Selenium-Webkit 2.38.0 gems来测试Rails 3.2.13应用程序。
我有以下测试:
visit my_favorite_path
click_link_or_button 'Share'
page.should have_link 'Send Email'
click_link_or_button 'Send Email'
last_email.should be_present
第二个“click_link_or_button”失败,出现以下(非常不透明)错误:
Failure/Error: click_link_or_button 'Send Email'
NoMethodError:
undefined method `start_with?' for nil:NilClass
当我使用click_link 'Send Email'
或first(:link, 'Send Email').click
替换有问题的行时出现同样的错误。
这可能是什么问题?测试的第三行通过,似乎确认链接存在,但是然后尝试单击链接失败,这是一个非常无用的错误。
答案 0 :(得分:1)
好吧,愚蠢的我,我忘了在考试中加入js: true
,这似乎解决了这个问题:
it 'should send an email when I ask it to', js: true do
visit my_favorite_path
click_link_or_button 'Share'
page.should have_link 'Send Email'
click_link_or_button 'Send Email'
last_email.should be_present
end
我真的更愿意删除这个问题,但似乎我不能再这样了。无论如何,也许这对找到这个的人有帮助。
答案 1 :(得分:0)
试试这个:
click_button "Send Email"
或者可能是某些验证失败检查您的模型和控制器代码。其中使用了start_with。