Sinon-返回值不是函数

问题描述 投票:0回答:1

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

#!/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不是函数

请告知我如何正确存根bulkUpdateDependencies功能?

sinon stub
1个回答
1
投票

我想您想直接对独立函数进行存根。这是解决方案:

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/stackoverflow/59435659

© www.soinside.com 2019 - 2024. All rights reserved.