2014-09-12 112 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