Sinon.js Mock 库速查表

Sinon 是 JavaScript 测试用的 spy、stub、mock 库,隔离依赖、控制时间必备。

编程语言·共 26 条命令·最后更新 2026-07-19
返回 编程语言

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 抛出错误,适合在测试框架中使用。