node.jsunit testing模拟依赖

我有一个关于使用proxyquire(或任何其他build议如何testing下面的代码)

如果我有以下文件来testing:

var path = require('path'); module.exports = function (conf) { var exported = {}; exported.getIssue = function (issueId, done) { ... ... }; return exported; }; 

如何在使用proxyquire模拟path时传递'conf'variables; VAR?

有没有其他的方式来做到这一点,如果不使用proxyquire?

您只需将confvariables传递给通过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; });