【问题标题】:mocha, how to handle test cases duplicate code? [duplicate]mocha,如何处理测试用例重复代码? [复制]
【发布时间】:2017-01-22 03:25:14
【问题描述】:

如您所见,我的测试用例有重复的部分。

我该如何处理?只写一个通用函数来重用?

有没有mocha 的方法来处理这个问题?

 it('test case 1', function() {
    var target = {
        a: 1,
        b: 1
    };
    var source = {
        c: 1
    };
    expect(deepMerge(target, source)).to.deep.equal({a: 1, b: 1, c: 1});

    //dulplicate
    expect(target).to.eql(target);
    expect(source).to.eql(source);
});

it('test case 2', function() {
    var target = {
        a: 1,
        b: 1
    };
    var source = {
        a: 2,
        c: 1
    };

    expect(deepMerge(target, source)).to.deep.equal({a: 2, b: 1, c: 1});
    //dulplicate
    expect(target).to.eql(target);
    expect(source).to.eql(source);
});
//more test cases also have the duplicate part.

【问题讨论】:

标签: javascript unit-testing mocha.js


【解决方案1】:

您可以将所有重复的期望案例放在某个函数中,并在每个 it 块中调用该函数;

function duplicateTests(target, source) {
    expect(target).to.eql(target);
    expect(source).to.eql(source);
}; 

it('test case 1', function() {
    var target = {
        a: 1,
        b: 1
    };
    var source = {
        c: 1
    };
    expect(deepMerge(target, source)).to.deep.equal({a: 1, b: 1, c: 1});

  duplicateTests(target, source);
});

it('test case 2', function() {
    var target = {
        a: 1,
        b: 1
    };
    var source = {
        a: 2,
        c: 1
    };

    expect(deepMerge(target, source)).to.deep.equal({a: 2, b: 1, c: 1});
    duplicateTests(target, source);
});
//more test cases also have the duplicate part.

【讨论】:

  • 感谢您的回答。我知道它可以工作。我只想知道有没有mocha 方法可以做到这一点?也许提供一些hookbeforeEach
猜你喜欢
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 2013-04-24
  • 1970-01-01
相关资源
最近更新 更多