我需要以某种方式模拟该document
对象,以便能够对遗留的 TypeScript 类进行单元测试。该类导入另一个类View.ts
(import
document
我的进口链:
controller.ts -> view.ts -> dragula -> crossvent -> 自定义事件
// Controller.ts:
import { View } from './View';
// View.ts:
const dragula = require('dragula');
// dragula requires crossvent, which requires custom-event, which does this:
module.exports = useNative() ? NativeCustomEvent :
'function' === typeof document.createEvent ? function CustomEvent (type, params) {
var e = document.createEvent('CustomEvent');
// ...
} : function CustomEvent (type, params) {
// ...
}
// controller.spec.ts:
import { Controller } from '../../src/Controller';
我得到的错误:
ReferenceError:文档未定义
View
尝试使用proxyquire模拟,如下所示:
beforeEach( () => {
viewStub = {};
let view:any = proxyquire('../../src/View', { 'View': viewStub });
viewStub.constructor = function():void { console.log('hello!'); };
});
View
我的问题是,由于import
语句,甚至在初始化之前就会弹出错误。