【发布时间】:2015-09-24 19:01:46
【问题描述】:
我有一个测试应该从我的患者列表中选择一个患者。如果我在没有js: true 的情况下运行功能测试,它会非常好。
问题是,在我选择了患者之后,我还必须执行一个更改 javascript 事件。如果我使用任何 js 驱动程序(无论是 selenium 还是 capybara-webkit),我的测试都会失败,说明:
Unable to find option "Patient #1"
我尝试从问题 Capybara with :js => true causes test to fail 中删除 DatabaseCleaner 和解决方案。
RSpec.feature "Select patient", type: :feature do
background do
create(:patient)
login_as create(:user)
visit root_path
end
scenario "User selects a created patient", js: true do
select("Patient #1", from: 'clinical_event_patient_id')
end
end
我还尝试将js: true 设置为background,但到目前为止我没有成功。
【问题讨论】:
-
您确定该选项在视图中吗?您是否尝试使用 save_and_open_page 或 save_screenshot 来查看您的页面?如果你有一个 js 逻辑来显示这个下拉菜单,有时会在选择和逻辑之间发生时间间隔来显示验收测试的下拉菜单。
-
我使用 selenium 打开浏览器并使用 pyr 暂停它。选择菜单与提示选择一起出现,但不存在其他选项。
-
请显示您的数据库清理配置 - 您需要使用截断来进行 js 测试:true
-
正如我在问题中已经说过的那样,我尝试完全删除数据库清理器,但没有成功,以及互联网上显示的建议解决方案(使用 js:true)。确实创建了记录(患者),只是没有放入选择选项中。
-
你不想删除数据库清理器,这是必要的。你怎么知道病人是在应用程序线程中创建和访问的?如果您使用基于事务的测试,则记录似乎是在测试线程中创建的,但实际上永远不会写入数据库,因此在应用程序线程中不可用所以正如我所问,请显示您的配置
标签: ruby-on-rails ruby rspec capybara