如何将 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);
}

另一种方法是遵循 的建议:给它一个损坏的视频或切断互联网。当源无效时我得到一个错误,所以你也可以试试。

没有从浏览器中模拟错误的方法。您必须自己设置环境来模拟错误(errorabort 事件):

  • 创建两个错误文件:一个有容器错误(t运行确定文件大小)和一个有编码错误(十六进制编辑文件并覆盖一些数据)
  • 另外对一个不存在的文件使用URL
  • 设置可以终止文件服务或关闭测试站点的服务器脚本
  • 设置一个可以禁用网络接口的脚本

然后 运行 针对每个场景进行特定测试,以了解您的代码的行为方式。

可以调度自定义事件,但问题是它不会阻止浏览器加载文件,这意味着您仍然可以获得加载事件等,这会产生冲突。

可以 通过在视频播放时更改视频源来生成 abort 事件 - 这有可能(如果您允许为同一媒体元素交换源) 你需要处理的事情,因为在这种情况下它在技术上不是错误。