gpt4 book ai didi

javascript - Nodejs,诗乃 : How to test some functions are called upon an event

转载 作者:搜寻专家 更新时间:2023-11-01 00:05:10 24 4
gpt4 key购买 nike

假设我的代码中有一个对象,假设是一个用户

User 是一个 eventEmitter,所以我喜欢代码中的很多地方:

User.on('register', notifyFriends);
User.on('register', sendWelcomeEmail);

这几行原则上在不同的文件中。

我想确保相关函数在我的测试中被调用,所以我做了这样的事情:

describe('User Events', () => {
before(() => {
sinon.stub(userListeners, 'notifyFriends').callsFake(async () => {});
});
after(() => {
userListeners.notifyFriends.restore();
});

describe('register', () => {
it('should trigger the "notifyFriends" handler once user is registered', () => {

UserModel.emit('register');
expect(userListeners.notifyFriends).to.be.calledOnce();

});
});
});

问题是函数在 expect 语句之后运行,因此测试显然失败了。

解决它的一个简单方法是在 Timeout block 中运行 expect,并希望该函数在给定时间内被调用。

但我想知道是否有更好、更优雅的方法。

最佳答案

问题不同。

注册到处理程序的代码在生成 stub 之前执行。 (所以这个函数还不是 spy )

因此请务必运行 stub ,仅在运行注册到 evetns 的应用程序中的其余代码之后。

关于javascript - Nodejs,诗乃 : How to test some functions are called upon an event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46076259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com