0

我正在尝试使用 proxyquire 来存根 child_process 模块的 spawnSync 方法,但它不起作用。console.log(gitResponse)我的文件index.js中的 不返回存根字符串,而是未存根响应(在本例中为 git 帮助文本)。

有人可以看到我做错了什么吗?

/index.js

var childProcess = require('child_process');

function init () {
  var gitInit = childProcess.spawnSync('git', ['init']);
  var gitResponse = gitInit.stdout.toString() || gitInit.stderr.toString();
  console.log(gitResponse);
}

module.exports = {
init: init
}

/test/indexTest.js

var assert = require('assert');
var index = require('../index.js');
var sinon = require('sinon');
var proxyquire = require('proxyquire');

describe('test', function () {
it('tests', function () {

    var spawnSyncStub = function (command, args) {
        return {
          stdout: {
            toString: () => "git init success string"

          }
        };
      };

proxyquire('../index.js', {
        'child_process': {
          spawnSync: spawnSyncStub
        }
      });

index.init();

} 
}
4

1 回答 1

1

根据文件;你不应该做这样的事情吗:?

var assert = require('assert');


var index = proxyquire('../index.js', {
  'child_process': {
    spawnSync: function (command, args) {
      return {
        stdout: {
          toString: () => "git init success string"
        }
      };
    }
  }
});

var sinon = require('sinon');
var proxyquire = require('proxyquire');

describe('test', function () {
  it(
    'tests'
    ,function () {
      sinon.assert.match(index.init(), "git init success string");
    } 
  )
});
于 2017-11-22T02:59:19.060 回答