Rspec 测试,水豚找不到 link 或按钮
Rspec testing, Capybara unable to find link or button
这是我的请求测试失败的部分:
scenario 'Admin destroys a job posting + gets notified' do
parent = create(:parent)
create(:assignment, user_id: @user.id, role_id: 1)
demand = create(:demand, shift_id: 4)
sign_in(@user)
visit demands_path
click_on 'Destroy'
expect(page).to have_content('successfully')
end
这是错误:
Failure/Error: click_on 'Destroy'
Capybara::ElementNotFound:
Unable to find link or button "Destroy"
这里是对应的索引视图,在应用中包含一个"Destroy"link:
知道为什么这个测试失败了吗?
很可能您认为页面上的数据实际上不是。这可能有多种原因。
您的页面需要 JS 而您没有使用支持 JS 的驱动程序 - 请参阅 https://github.com/teamcapybara/capybara#drivers
你的sign_in
方法定义为填写user/pass然后点击一个按钮,但是没有期望确认用户已经完成登录的内容结束。这可能会导致在登录完成之前发生以下访问,因此不会实际登录。通过检查 page.html
的结果或在单击之前调用 page.save_and_open_screenshot
来验证这一点。
您的 'Destroy' "button" 既不是实际的 元素也不是
来解决这个问题
您正在使用支持 JS 的驱动程序,但您的记录实际上对应用程序不可见 - 这会影响您的所有测试,所以我认为可能不是这个。如果是这种情况,登录将失败,您可能需要安装 database_cleaner 并配置为与 RSpec 和 Capybara - https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-example
一起使用
这是我的请求测试失败的部分:
scenario 'Admin destroys a job posting + gets notified' do
parent = create(:parent)
create(:assignment, user_id: @user.id, role_id: 1)
demand = create(:demand, shift_id: 4)
sign_in(@user)
visit demands_path
click_on 'Destroy'
expect(page).to have_content('successfully')
end
这是错误:
Failure/Error: click_on 'Destroy'
Capybara::ElementNotFound:
Unable to find link or button "Destroy"
这里是对应的索引视图,在应用中包含一个"Destroy"link:
知道为什么这个测试失败了吗?
很可能您认为页面上的数据实际上不是。这可能有多种原因。
您的页面需要 JS 而您没有使用支持 JS 的驱动程序 - 请参阅 https://github.com/teamcapybara/capybara#drivers
你的
sign_in
方法定义为填写user/pass然后点击一个按钮,但是没有期望确认用户已经完成登录的内容结束。这可能会导致在登录完成之前发生以下访问,因此不会实际登录。通过检查page.html
的结果或在单击之前调用page.save_and_open_screenshot
来验证这一点。您的 'Destroy' "button" 既不是实际的 元素也不是
来解决这个问题
您正在使用支持 JS 的驱动程序,但您的记录实际上对应用程序不可见 - 这会影响您的所有测试,所以我认为可能不是这个。如果是这种情况,登录将失败,您可能需要安装 database_cleaner 并配置为与 RSpec 和 Capybara - https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-example
一起使用