Sinon .callsFake()没有嘲笑函数的返回

时间:2019-07-15 18:00:01

标签: javascript testing mocha sinon

我的测试文件中包含以下代码:

    const stub1 = sinon.stub('../path/to/module', '_myFunc')
    stub1.callsFake( function()  { console.log("223344") }
    )

beforeEach中的Mocha内,但是当调用_myFunc时,它没有执行console.log

_myFunc的导出方式如下:

module.exports = {
  _myFunc
}

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

这是一个有效的示例:

index.ts

function _myFunc() {
  console.log('real implementation');
}
module.exports = {
  _myFunc
};

index.spec.ts

import { expect } from 'chai';
import sinon from 'sinon';

const mod = require('./index');

describe('mod', () => {
  it('should stub function', () => {
    const stub = sinon.stub(mod, '_myFunc').callsFake(() => {
      console.log('223344');
    });
    mod._myFunc();
    expect(stub.calledOnce).to.be.true;
  });
});

单元测试结果:

  mod
223344
    ✓ should stub function


  1 passing (8ms)

源代码:https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/57044971