【问题标题】:node.js unit testing mock dependencynode.js 单元测试模拟依赖
【发布时间】:2016-02-19 18:30:57
【问题描述】:

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

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

var path = require('path');

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

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

        ...
    };

    return exported;
};

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

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

【问题讨论】:

    标签: javascript node.js jasmine jasmine-node proxyquire


    【解决方案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;        
    });
    

    【讨论】:

    • 感谢您的建议!我会试试这个,如果它有效,请告诉你!
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2017-09-25
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多