在我们正在构建的项目中,工作流中有一个标准序列。
- Controller 接收请求
- 然后通过@nestjs/event-emitter 触发一个事件
- 事件监听器监听它并根据事件执行一些代码
我们如何在不实际执行内部代码的情况下正确测试事件是否已被触发?
我们正在使用 Jest 进行测试。
用 Jest 模拟似乎不起作用,因为我们想测试实际的触发事件而不是结果。
有什么建议吗?
"node": "16.14.2"
"@nestjs/event-emitter": "^1.1.0",
"jest": "^27.5.1",
最佳答案
根据@ovidijus-parsiunas 的建议,我们成功地监视了“OnEvent”方法。
it.only("start selling", async () => {
const user = await userSeeder.createOne();
const spy = jest
.spyOn(StartSellingListener.prototype, 'startSelling')
.mockImplementation(() => null);
expect(eventEmitter.hasListeners(EventsEnum.USER_START_SELLING)).toBe(true);
const startSelling = userService.startSelling(user);
expect(startSelling).toBeTruthy();
expect(spy).toBeCalledWith(user);
spy.mockRestore();
});
关于node.js - 测试 NestJS 中是否触发了事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72198777/