我对打字稿还不太熟悉,但我认为这个问题实际上与Node间接相关。无论如何,我正在尝试编写一个小节点库,并且正在使用Typescript。 我有一堂课,可以这样说:
//foo.ts
export class Foo {
constructor(options:Options = {}) { ... }
}
但是鉴于我的lib的本性,大多数时候直接使用此类并不理想,因此我也导出了一个模块
//module.ts
import { Foo } from './foo'
let instance
... // other methods
export function init(options: Options) {
instance = new Foo(options)
}
一切正常。我的问题是为module.ts
编写单元测试。我需要编写几个测试用例,但是一旦我调用module.init(options)
,就将创建该实例,并将其作为节点缓存模块,再次将其导入测试文件中仍具有foo
实例。在香草javascript中,我使用了proxyquire来生成模块的其他实例,但是看来它与Typescript的配合效果不是很好。我如何“强制”节点“重新导入”“我的模块的“干净”实例?
答案 0 :(得分:0)
如何“强制”节点“重新导入”模块的“干净”实例?
一种简单的工厂方法,例如更改
//foo.ts
export class Foo {
constructor(options:Options = {}) { ... }
}
收件人:
//foo.ts
class Foo {
constructor(options:Options = {}) { ... }
}
export const create(options: Options): Foo {
return new Foo(options);
}