typescript - 带有回调函数的代码覆盖 istanbuljs,如 removeEventListener
问题描述
istanbuljs不会在回调函数的情况下正确报告代码覆盖率,如下例所示:
obj.removeEventListener('unload', () => this.dispose());
测试用例:
it('dispose call removeEventListener', async() => {
spyOn(obj, 'removeEventListener');
obj.dispose();
expect(obj['removeEventListener']).toHaveBeenCalledTimes(1);
expect(obj['removeEventListener']).toHaveBeenCalledWith('unload', jasmine.any(Function));
});
解决方案
我只是将回调函数保存在一个单独的函数中,以修复 istanbuljs 代码覆盖率报告。
obj.callDispose = () => { this.dispose() }; // obj.dispose();
obj.removeEventListener('unload', this.callDispose); // obj.callDispose
测试用例:
it('dispose call removeEventListener', async() => {
spyOn(obj, 'removeEventListener');
obj.dispose();
expect(obj['removeEventListener']).toHaveBeenCalledTimes(1);
expect(obj['removeEventListener']).toHaveBeenCalledWith('unload', obj.callDispose);
});
推荐阅读
- javascript - 当网页的输入元素位于影子 dom 内时,用于跟踪文件上传的 chrome 扩展?
- pycharm - PyCharm PyTest:未找到测试对象
- javascript - 如何在不下载 javascript 的情况下访问 csv
- python - 一个接一个地运行python脚本,没有任何中断
- python - 如何向 Django 类添加方法以转换为字典
- maven - 如何配置 maven post-man 插件以包含具有动态名称的附件目录?
- python - 如何检查数字是否在多个范围内?
- regex - PowerShell:使用通配符从变量中删除文本
- laravel - 错误 composer install 在 laravel 脚本之后,在迁移到 php 8 和 laravel 8.4 之后 - 该进程已用信号“11”发出信号
- wordpress - 将自定义样式添加到没有子主题的古腾堡编辑器