在使用 Sinon.js 时,可以通过 called、calledOnce、calledTwice 等属性或 calledWithExactly()、callCount 等方法来验证函数的调用次数,从而设置和检查期望的调用次数。以下是具体的实现方法和示例:
Sinon 提供了多种方式来检查函数的调用次数,常用的包括:
方法/属性 | 说明 |
|---|---|
| 函数是否被调用过(至少一次) |
| 函数是否被调用过 恰好一次 |
| 函数是否被调用过 恰好两次 |
| 函数是否被调用过 恰好三次 |
| 函数被调用的 总次数(数值) |
| 断言函数被调用 恰好 n 次 |
假设我们有一个自定义 Hook useLogger,它依赖一个 log 函数记录信息,我们需要测试该函数的调用次数:
除了次数,还可以结合调用参数进行更精确的验证,例如“函数被调用两次,且第二次调用的参数为 error”:
it('should call log with correct parameters', () => {
const { result } = renderHook(() => useLogger());
act(() => {
result.current.logMessage('info');
result.current.logMessage('error');
});
// 验证总调用次数为2
sinon.assert.callCount(logSpy, 2);
// 验证第二次调用的参数
sinon.assert.calledWithExactly(logSpy.secondCall, 'error');
});常用的调用顺序相关方法:
firstCall:第一次调用的信息secondCall:第二次调用的信息thirdCall:第三次调用的信息lastCall:最后一次调用的信息使用 Sinon.js 验证函数调用次数的核心步骤是:
sinon.spy() 或 sinon.stub() 创建监视函数(spy/stub);calledOnce/callCount 等属性或 sinon.assert.callCount() 断言验证调用次数。这种方式可以精确控制和验证外部依赖的调用行为,确保自定义 Hook 或组件的逻辑符合预期。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。