强制 Capybara 在意外模式下失败
Force Capybara to fail on unexpected modals
我正在进行一些测试来触发和验证这样的 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
或其他),为什么我的 accept_alert
没有通过测试
- 自从我的 accept 块包裹了整个测试主体后,如何展开模态?
我可能有一个愚蠢的语法错误,但我认为以上是正确的并且正在进行另一项测试。为了弄清真相,我想禁用 Capybara 的 "accepting by default".
有什么办法可以:
- 使任何意外模态无法通过测试(而不是 accept/dismiss)?
- 注销出现的模态文本?
默认情况下接受不是由 Capybara 完成的,它是由您正在使用的驱动程序完成的(我假设基于正在生成的消息的 Cuprite)。如果您包装导致模态出现的操作(基于表现出的行为,我假设 visit
)而不是整个测试,那么如果错误消息不正确,它将引发错误
因为 accept_alert
方法只在块完成期待后才期待模态
accept_alert('Hello world') do
visit '/'
end
click_button 'Button'
auto-accepting(带有警告)意外警报的行为是由于其原始设计基于 Poltergeist,我认为目前无法配置。
我正在进行一些测试来触发和验证这样的 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
或其他),为什么我的accept_alert
没有通过测试 - 自从我的 accept 块包裹了整个测试主体后,如何展开模态?
我可能有一个愚蠢的语法错误,但我认为以上是正确的并且正在进行另一项测试。为了弄清真相,我想禁用 Capybara 的 "accepting by default".
有什么办法可以:
- 使任何意外模态无法通过测试(而不是 accept/dismiss)?
- 注销出现的模态文本?
默认情况下接受不是由 Capybara 完成的,它是由您正在使用的驱动程序完成的(我假设基于正在生成的消息的 Cuprite)。如果您包装导致模态出现的操作(基于表现出的行为,我假设 visit
)而不是整个测试,那么如果错误消息不正确,它将引发错误
因为 accept_alert
方法只在块完成期待后才期待模态
accept_alert('Hello world') do
visit '/'
end
click_button 'Button'
auto-accepting(带有警告)意外警报的行为是由于其原始设计基于 Poltergeist,我认为目前无法配置。