我有一个关于使用proxyquire的问题(或关于如何测试以下代码的任何其他建议)
如果我要测试以下文件:
var path = require('path');
module.exports = function (conf) {
var exported = {};
exported.getIssue = function (issueId, done) {
...
...
};
return exported;
};
如何在使用proxyquire模拟'path'时传入'conf'变量; VAR?
如果不使用proxyquire,还有其他方法吗?
答案 0 :(得分: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;
});