0

我一直在努力为在构造函数中满足某些依赖项的类编写单元测试。类是这样的:

class MyClass extends EventEmitter {
    private readonly _instance: MyServer

    public constructor() {
        this._instance = new MyServer()
        // things that makes this instance emit events
    }

    public getInstance() {
        return this._instance
    }
}

现在 MyServer 类会根据非常具体的系统条件发出一些事件,这些事件在 CI 期间无法重现;所以我认为编写一个FakeMyServer类并将其存入实际的类可以让我控制事件。

const fakeMyServer = new FakeMyServer()
sinon.stub(MyServer, fakeMyServer)
    
const myClass = new MyClass()
fakeMyServer.emit('connect')

// assert .on() was called

但是,当我这样做或类似的事情(也尝试过 jest.mock、jest.spyOn 等)时,我会遇到各种错误,而且似乎不只是替换“通过反射”。我记得在 Java 中有一个类似的功能,我想知道 TypeScript 是否有类似的功能。

4

0 回答 0