2017-11-22 1 views
-1

私はchild_processモジュールのspawnSyncメソッドをスタブするためにproxyquireを使用しようとしていますが、動作しません。私のindex.jsファイル内のconsole.log(gitResponse)は、スタブされた文字列を返しませんが、返されていない応答(この場合はgitヘルプテキスト)を返します。Proxyquireはスタブしません

私が間違っていることを誰かが見ることができますか? documentationによれば

/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

答えて

1
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(); 

} 
} 

と、あなたはこのようなことをしてはいけないのですか?

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"); 
    } 
) 
}); 
関連する問題