【问题标题】:Unit test private module function [duplicate]单元测试私有模块功能[重复]
【发布时间】:2015-11-09 03:48:44
【问题描述】:

我有一个带有模块的节点应用程序,里面有几个函数,我想测试这个模块中的所有函数,问题是它们中的一些是“私有的”,因为我没有在模块导出命令中导出它们,我的问题是否可以测试它们?或者我应该将它们添加到导出对象中以测试它们。

我用摩卡。

例如这是我的代码

it('Should update env',
    function (done) {
        var inst = onsr.updatePorts("'[{key:501,key:501}]'", 'key', 10);
        inst.should.equal('[{key:501,key:10}]');
        done();
    })

自从我将更新 updatePorts 放在模块导出中,它是“私有”的,但我想以某种方式避免它......

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js


    【解决方案1】:

    不要直接测试私有函数,测试使用私有函数的公共函数。

    这将使您了解私有函数中的非分支代码行。为了覆盖其余行,您将需要操作输入,并且在某些情况下存根依赖项以模拟执行这些代码行的情况。

    【讨论】:

    • 我认为这不是一个好建议。您想确保您的代码没有错误,而不是您的输入没有遇到这些错误。一个好的测试套件将确保所有功能都是原始的。 (旁白:不回答问题)
    • 如果您的输入没有遇到这些错误,则错误在冗余代码中,因此您可以通过删除代码来消除错误。 - 如果你直接测试你所有的私有函数,你可能会修复错误,但你可能没有注意到这些错误是冗余代码(即无法通过公共 api 访问系统的代码)
    • 不,我不同意。这根本不是一个好习惯。
    • 您认为只测试系统中可以实际使用的部分是不好的做法吗?为什么?
    • 我认为不单独测试每个功能是不好的做法。使用该函数的代码是否导致它中断是无关紧要的。按照您建议的方式进行操作会在未来某个时候发现深层错误,届时将很难找到并且可能难以解决。
    猜你喜欢
    • 2016-01-27
    • 2010-12-03
    • 2021-10-01
    • 2015-09-27
    • 2018-01-15
    • 2013-03-04
    • 1970-01-01
    • 2020-12-12
    • 2020-10-04
    相关资源
    最近更新 更多