首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Proxyquire不会存根

Proxyquire不会存根
EN

Stack Overflow用户
提问于 2017-11-22 08:07:42
回答 1查看 777关注 0票数 0

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

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

/index.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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();

} 
}
EN

回答 1

Stack Overflow用户

发布于 2017-11-22 10:59:19

根据documentation的说法;你不应该这样做:?

代码语言:javascript
复制
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");
    } 
  )
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47424805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档