我尝试使用proxyquire来存根child_process模块的spawnSync方法,但它不起作用。我的index.js文件中的console.log(gitResponse)不会返回存根字符串,而是返回未存根的响应(在本例中,返回的是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();
}
}发布于 2017-11-22 10:59:19
根据documentation的说法;你不应该这样做:?
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");
}
)
});https://stackoverflow.com/questions/47424805
复制相似问题