【发布时间】:2018-08-31 17:37:24
【问题描述】:
我正在测试一个函数,该函数将对 mongo 数据库进行 2 次调用,每个调用都有不同的参数。该函数称为“saveAchProgress”,将向 db 发出 2 个“updateOne”请求。
我正在使用模拟,因为我需要监视函数并同时阻止数据库调用(在单元测试期间未连接到数据库)。
我想检查参数,但仅限于第二个数据库调用
我可以轻松地检查呼叫 1 和 2 是否正确拨打:
it('should update if value >= achNumber', async function (): Promise<void> {
mock.expects('updateOne').twice().returns('foo');
await achievementsServiceFunctions.saveAchProgress(1, 1);
mock.verify();
});
但是,当我检查参数时,第一次调用的参数出现错误。
it('should update game with right arguments: collection', async function (): Promise<void> {
mock.expects('updateOne').withArgs('game', sinon.match.any, sinon.match.any).returns('foo');
await achievementsServiceFunctions.saveAchProgress(1, 1);
mock.verify();
});
我知道 sinon mock 有自己的检查方式,但我在 sinon 文档中找不到适合我需要的内容。有解决办法吗?
【问题讨论】:
标签: node.js unit-testing typescript mocking sinon