【问题标题】:Reusing mocha test code重用 mocha 测试代码
【发布时间】:2014-09-12 13:52:18
【问题描述】:

我正在开发一个 NodeJS 应用程序并使用 Mocha 进行单元测试。

假设我有两个非常相似的测试服。 事实上,这些是对两个类的测试 实现相同的接口。

例如:

suit_a.js

var A = require('./a');
describe(function () {
    var instance;
    beforeEach(function () {
        instance = new A();
    });
    it(function () {
        assert(instance.getSomeValue() === 1);
    });
});

suit_b.js

var B = require('./b');
describe(function () {
    var instance;
    beforeEach(function () {
        instance = new B({option: "option-value"});
    });
    it(function () {
        assert(instance.getSomeValue() === 1);
    });
});

有没有办法消除代码重复?有没有办法拥有两个 不同的测试套件,使用相同的断言代码,但配置不同 或类似的东西?

我现在唯一的想法是使用某种源代码生成, 但如果可能的话,我想避免这种情况。

【问题讨论】:

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


    【解决方案1】:

    将内部函数移动到一个额外的文件并require 它。 在您的情况下,您需要额外的 new A()new B(...),因此要么使它们在外部可用,要么将它们作为参数包含在 require-result 中:

    var t = require('innerTestGen');
    
    var t1 = t.create(new A())
    describe(t1);
    var t2 = t.create(new B(...))
    describe(t2);
    

    希望有帮助吗?

    【讨论】:

    • 这很好地解决了现在的问题,唯一的缺点是堆栈跟踪消息更长且不太明显,谢谢。
    猜你喜欢
    • 2023-03-07
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2015-07-16
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多