Sinon.js Mock 库速查表
Sinon 是 JavaScript 测试用的 spy、stub、mock 库,隔离依赖、控制时间必备。
返回 编程语言Spy 间谍 6
sinon.spy(obj, "method")监听对象方法调用
sinon.spy(fn)包装函数为 spy
spy.calledOnce是否被调用一次
spy.calledWith(arg1, arg2)是否传入指定参数
spy.returned(value)是否返回指定值
spy.restore()恢复原方法
Stub 桩函数 6
sinon.stub(obj, "method")替换对象方法为空函数
stub.returns(value)指定返回值
stub.throws(Error)抛出异常
stub.callsFake(fn)用自定义函数替代
stub.resolves(value)返回 Promise(异步)
stub.restore()恢复原方法
Mock 模拟 6
sinon.mock(obj)创建 mock 对象
mock.expects("method")期望方法被调用
expects.once()期望调用一次
expects.withArgs(arg)期望传入参数
expects.never()期望不被调用
mock.verify()验证所有期望
Fake Timer 时间控制 4
sinon.useFakeTimers()接管 setTimeout/setInterval
clock.tick(1000)快进 1000 毫秒
clock.restore()恢复真实时间
sinon.useFakeTimers({ now: 1000 })设置初始时间
常用断言 4
sinon.assert.called(spy)断言 spy 被调用
sinon.assert.calledOnce(spy)断言调用一次
sinon.assert.calledWith(spy, arg)断言传入参数
sinon.assert.notCalled(spy)断言未被调用
💡 提示
- Spy 监听调用但不改变行为,Stub 替换行为。
- Mock 结合 spy 和 stub,并验证期望。
- 测试后必须 restore() 恢复原方法,或用 sandbox 自动管理。
- Fake Timer 用于测试定时任务,避免真实等待。
- sinon.assert 抛出错误,适合在测试框架中使用。