Sinon - returns 不是函数

Sinon - returns is not a function

我正在编写单元测试,我有一个像这样的模块文件:

#!/usr/bin/env node
const shelljs = require('shelljs');

const bulkUpdateDependencies = (outdatedPackages) => {
    // some logic
    return ({});
};

module.exports = bulkUpdateDependencies;

在测试文件中我需要它但是当我尝试这样做时:

const bulkUpdateDependencies = require('../src/bulk-update-dependencies');

bulkUpdateDependenciesStub = sandbox.stub(bulkUpdateDependencies);
bulkUpdateDependenciesStub.returns({});

我明白了:

bulkUpdateDependencies.returns is not a function

请告知如何正确存根 bulkUpdateDependencies 函数?

我猜您想直接存根一个独立函数。这是解决方案:

bulk-update-dependencies.js:

const bulkUpdateDependencies = (outdatedPackages) => {
  return {};
};

module.exports = bulkUpdateDependencies;

bulk-update-dependencies.spec.js:

const sinon = require("sinon");

describe("59435659", () => {
  let sandbox;
  before(() => {
    sandbox = sinon.createSandbox();
  });
  afterEach(() => {
    sinon.restore();
  });
  it("should pass", () => {
    const bulkUpdateDependenciesStub = sandbox.stub().returns("stubbed data");
    require.cache[require.resolve("./bulk-update-dependencies.js")] = {
      exports: bulkUpdateDependenciesStub,
    };
    const bulkUpdateDependencies = require("./bulk-update-dependencies.js");
    const actual = bulkUpdateDependencies();
    expect(actual).to.be.equal("stubbed data");
    sinon.assert.calledOnce(bulkUpdateDependenciesStub);
  });
});

带有覆盖率报告的单元测试结果:

 59435659
    ✓ should pass


  1 passing (7ms)

----------------------------------|----------|----------|----------|----------|-------------------|
File                              |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------------------------------|----------|----------|----------|----------|-------------------|
All files                         |      100 |      100 |      100 |      100 |                   |
 bulk-update-dependencies.spec.js |      100 |      100 |      100 |      100 |                   |
----------------------------------|----------|----------|----------|----------|-------------------|

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