【发布时间】:2019-02-18 18:11:38
【问题描述】:
我在节点环境中使用 mocha、chai 和 sinon 进行单元测试。我需要测试一个场景,它调用服务来获取数据并返回数据。
我的控制器如下所示:
{
get model() { return schema},
async findUser(data) {
const data = await this.model.find({ id: data.id });
return data;
}
}
在我的 mocha 测试中,我使用 Sinon 存根返回模型并找到如下函数:
sinon.stub(controller, 'model').get(() => ({
find: () => ({ username: 'asdf' })
}));
我的测试按预期进行。现在我想测试一下我的 find 方法 id 是否调用过一次,以及是否传递给它的参数。为此,我添加了以下代码
const spyFind = sinon.spy(controller.model, 'find');
assert.isTrue(spyFind.calledOnce);
这应该返回 true,因为调用了 spyFind 并且它返回了预期的模拟值。但是当我调试时,spyFind 对象说 isCalled 'false'。有人可以帮我理解我做错了什么吗?
【问题讨论】:
-
不清楚
controller.method指的是什么。你的意思是const spyFind = sinon.spy(controller.model, 'find');? -
哦,是的,更新了。它是
controller.model