我对使用proxyquire有一个疑问(或关于如何测试以下代码的任何其他建议)

如果我有以下文件要测试:

var path = require('path');

module.exports = function (conf) {
    var exported = {};

    exported.getIssue = function (issueId, done) {
        ...

        ...
    };

    return exported;
};


我如何在使用proxyquire模拟'path'时传递'conf'变量; var?

如果不使用proxyquire,还有其他方法吗?

最佳答案

您只需要将conf变量传递给通过proxyquire所需的模块/功能。 Proxyquire具有执行相同的CommonJs所需内容的含义,但是可以模拟和存根某些模块。因此,您应该采取相同的行动。

var pathMock = {
   someMethod = function() {}
};
var confMock = {
   someMethod = function() {}
};
spyOn(pathMock, 'someMethod').and.callThrough();
spyOn(confMock, 'someMethod').and.callThrough();

module   = proxyquire('../path/to/module', {
    path: pathMock
});

it('do some test', function(done) {
    module(conf).getIssue();
    expect(pathMock.someMethod).toHaveBeenCalled;
    expect(confMock.someMethod).toHaveBeenCalled;
});

关于javascript - node.js单元测试模拟依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33772990/

10-12 01:06