重用摩卡testing代码

我正在开发一个NodeJS应用程序,并使用Mocha进行unit testing。

比方说,我有两个非常相似的testing西装。 实际上这些testing是针对两个实现相同接口的类。

例如:

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); }); }); 

有没有办法删除代码重复? 有没有办法有两个不同的testing西装,使用相同的断言代码,但具有不同的configuration或类似的东西?

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

将内部函数移动到一个额外的文件并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); 

希望有帮助?