如何将 HTML5 视频元素伪造为错误以测试错误处理
How to fake a HTML5 video element to error to test error handling
我目前正在开发一个 HTML5 视频播放器并连接了错误事件侦听器,但是到目前为止还没有出现任何错误。
有没有办法fake/simulate一个错误,来测试它是否正常工作?
也许我可以调用一个方法来强制它出错?
我不知道有任何内置方法可以模拟错误。我想您可以创建一个错误事件并将其分派给您的 <source>
元素之一。
function simulateError() {
// I'm not sure if it would be better to use ErrorEvent()
// Using Chrome devtools, this gives an error event that appears
// almost identical to having a source that gets a 404
var event = new Event('error', {
'view': window,
'cancelable': true
});
var src = document.getElementById('sourceElement');
src .dispatchEvent(event);
}
另一种方法是遵循 的建议:给它一个损坏的视频或切断互联网。当源无效时我得到一个错误,所以你也可以试试。
没有从浏览器中模拟错误的方法。您必须自己设置环境来模拟错误(error
和 abort
事件):
- 创建两个错误文件:一个有容器错误(t运行确定文件大小)和一个有编码错误(十六进制编辑文件并覆盖一些数据)
- 另外对一个不存在的文件使用URL
- 设置可以终止文件服务或关闭测试站点的服务器脚本
- 设置一个可以禁用网络接口的脚本
然后 运行 针对每个场景进行特定测试,以了解您的代码的行为方式。
可以调度自定义事件,但问题是它不会阻止浏览器加载文件,这意味着您仍然可以获得加载事件等,这会产生冲突。
您 可以 通过在视频播放时更改视频源来生成 abort
事件 - 这有可能(如果您允许为同一媒体元素交换源) 你需要处理的事情,因为在这种情况下它在技术上不是错误。
我目前正在开发一个 HTML5 视频播放器并连接了错误事件侦听器,但是到目前为止还没有出现任何错误。
有没有办法fake/simulate一个错误,来测试它是否正常工作?
也许我可以调用一个方法来强制它出错?
我不知道有任何内置方法可以模拟错误。我想您可以创建一个错误事件并将其分派给您的 <source>
元素之一。
function simulateError() {
// I'm not sure if it would be better to use ErrorEvent()
// Using Chrome devtools, this gives an error event that appears
// almost identical to having a source that gets a 404
var event = new Event('error', {
'view': window,
'cancelable': true
});
var src = document.getElementById('sourceElement');
src .dispatchEvent(event);
}
另一种方法是遵循
没有从浏览器中模拟错误的方法。您必须自己设置环境来模拟错误(error
和 abort
事件):
- 创建两个错误文件:一个有容器错误(t运行确定文件大小)和一个有编码错误(十六进制编辑文件并覆盖一些数据)
- 另外对一个不存在的文件使用URL
- 设置可以终止文件服务或关闭测试站点的服务器脚本
- 设置一个可以禁用网络接口的脚本
然后 运行 针对每个场景进行特定测试,以了解您的代码的行为方式。
可以调度自定义事件,但问题是它不会阻止浏览器加载文件,这意味着您仍然可以获得加载事件等,这会产生冲突。
您 可以 通过在视频播放时更改视频源来生成 abort
事件 - 这有可能(如果您允许为同一媒体元素交换源) 你需要处理的事情,因为在这种情况下它在技术上不是错误。