2014-09-12 114 views
1

我正在开发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); 
    }); 
}); 

有没有一种方法,以消除重复的代码?有没有办法有两个 不同的测试诉讼,使用相同的断言代码,但具有不同的配置 或类似的东西?

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

回答

1

将内部函数移动到一个额外的文件并require它。 在你的情况,你需要new A()new B(...)额外的,所以要么将它们提供外,或将它们作为参数传递给需要,结果是:

var t = require('innerTestGen'); 

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

希望帮助?

+0

现在解决了这个问题相当不错,唯一的缺点是更长,不太明显的堆栈跟踪消息,谢谢。 – 2014-09-13 14:33:54