我正在测试一些触发和验证JS警报的方法,
it 'triggers a modal' do
accept_alert('Hello world') do
visit '/'
click_button 'Button'
end
end
失败的原因:
Capybara::ModalNotFound:
Unable to find modal dialog with Hello world
无头运行时,我以为该对话框根本没有触发,这是我的JS代码的问题,但我注意到列出了测试日志:
* Listening on tcp://127.0.0.1:3001
Modal window has been opened, but you didn't wrap your code into (`accept_prompt` | `dismiss_prompt` | `accept_confirm` | `dismiss_confirm` | `accept_alert`), accepting by default
F
在完整的Chrome中运行时,我注意到该模式已被触发,并带有预期的消息。所以现在我不确定:
accept_alert
没有通过测试(例如,包含隐藏字符并且消息实际上是Hello world\t
。)我可能有一个愚蠢的语法错误,但是我认为以上是正确的,并且正在另一项测试上。为了尝试深入研究,我想禁用Capybara的“默认情况下接受”。
有什么方法可以
答案 0 :(得分:1)
默认情况下,Capybara并没有接受,而是由您使用的驱动程序完成的(根据所生成的消息,我假设是Cuprite)。如果您包装导致模态出现的动作(基于显示的行为,我假设是visit
)而不是整个测试,那么如果错误消息不正确,则会引发错误
因为accept_alert
方法仅在模块完成期望后才期望模态
accept_alert('Hello world') do
visit '/'
end
click_button 'Button'
自动接受(带有警告)意外警报的行为是由于其原始设计基于Poltergeist,并且我认为当前无法配置。