带有回调函数的代码覆盖 istanbuljs,如 removeEventListener
Code coverage istanbuljs with callback function, like in 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);
});
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);
});