如何使用mocha + chai + sinon测试fs.writeFile错误

时间:2017-05-23 19:37:03

标签: node.js mocha sinon chai

我想测试一下,如果在fs.writeFile期间发生错误,则会将消息输出到控制台日志。下面的测试确实通过了,但它将错误的堆栈跟踪输出到测试控制台,这是不需要的。如何避免?

describe('with fs error', () => {
  it('should output errors to console', () => {
    sandbox.stub(fs, 'writeFile').yields(new Error('write error'));
    const consoleSpy = sandbox.spy(console, 'log');
    history.save();
    expect(consoleSpy).to.have.been.calledOnce;
  });
});

1 个答案:

答案 0 :(得分:3)

它并不理想,但是如果您将console.log存根并在致电history.save后立即恢复它,您可能不会干扰Mocha对{{{{{{ 1}}:

console.log

测试是否抛出了正确的错误:

it('should output errors to console', () => {
  sandbox.stub(fs, 'writeFile').yields(new Error('write error'));
  const consoleStub = sinon.stub(console, 'log');
  history.save();
  consoleStub.restore();
  expect(consoleStub).to.have.been.calledOnce;
});