所以我想测试用户使用capybara和rspec删除他们的帐户:
scenario "User wants to delete their account" do
click_link "Account"
click_link "Delete My Account"
expect(page).to have_text("You're account was deleted.")
end
只有问题是当用户点击“删除我的帐户”时会出现js确认对话框。为确认此对话框,我执行了以下操作:
Capybara.javascript_driver = :webkit
添加到我的spec_helper.rb :js => true
添加到scenario "User wants to delete their account" do
。 现在似乎无法添加:js => true
。我收到错误Capybara::ElementNotFound: Unable to find link "Account"
,在它正常工作之前,js: true
会干扰这些水豚方法吗?我的配置错了吗?
答案 0 :(得分:0)
:js => true
告诉Capybara将JavaScript驱动程序用于您的规范;需要运行必须执行JavaScript作为其功能的一部分的页面。在您的情况下,JS确认对话框将需要它。
但是......还有其他一些事情需要注意:
答案 1 :(得分:0)
在点击“删除我的帐户”之前验证访问路径。
scenario "User wants to delete their account" do
click_link "Account"
expect(current_path).to eq '/my_accout'
click_link "Delete My Account"
expect(page).to have_text("You're account was deleted.")
end
答案 2 :(得分:-1)
重要的是,相关链接位于没有鼠标悬停事件时无法看到的下拉列表中。为了解决这个问题,我在点击链接之前用javascript打开了下拉列表。
page.execute_script('$(".dropdown-toggle").dropdown("toggle");')