2

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

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

var path = require('path');

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

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

        ...
    };

    return exported;
};

如何在使用 proxyquire 模拟“路径”时传入“conf”变量;变量?

如果不使用 proxyquire,还有其他方法可以做到这一点吗?

4

1 回答 1

1

您只需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;        
});
于 2015-11-18T06:40:13.947 回答