首页 > 解决方案 > 使用 sinon 如何避免测试嵌套函数?

问题描述

我正在使用 mocha/chai/sino 并且我是他们三个的新手。

const a = () => {
  b();
}

const b = () => {
  console.log('here');
}

在此示例中,我只想测试b调用时调用a而不执行b

就像是:

it('test', () => {
  const spy = sinon.spy(b);
  a();
  chai.expect(spy.calledOnce).to.be.true;
})

标签: javascriptmocha.jssinonsinon-chai

解决方案


诗乃的stub就是你要找的。

诗乃存根

何时使用存根?当您想要时使用存根:

  1. 从测试中控制方法的行为以强制代码沿特定路径运行。示例 > 包括强制方法抛出错误以测试错误处理。

  2. 当您想要阻止直接调用特定方法时(可能是因为它触发了不需要的行为,例如 XMLHttpRequest 或类似的)。

it('test', () => {
  const stub = sinon.stub(b);
  a();
  chai.expect(stub.calledOnce).to.be.true;
})

推荐阅读