如何在Node.js中模拟依赖项以进行测试?

Nic*_*ing 4 javascript unit-testing mocking node.js

我想为我的应用编写一些单元测试,是否可以以某种方式“模拟”与require('dependencyname')一起使用的某些依赖项?

Val*_*dge 5

您正在寻找Proxyquire :)

//file1
var get    = require('simple-get');
var assert = require('assert');

module.exports = function fetch (callback) {
  get('https://api/users', callback);
};

//test file
var proxyquire = require('proxyquire');
var fakeResponse = {status:200};
var fetch = proxyquire('./get', {
  'simple-get': function (url, callback) {
    process.nextTick(function () {
      callback(null, fakeResponse)
    })
  }
});

fetch(function (err, res) {
  assert(res.statusCode, 200)
});
Run Code Online (Sandbox Code Playgroud)

直接从他们的文档。