0
當我必須檢查返回無法手動(值)的值的函數時,我在單元測試中遇到了這種奇怪的情況。實際上這個函數是爲了創建這個值而做的。因此測試這樣的(JavaScript和QUnit框架):單元測試冗餘比較值
asyncTest("UTF-8 - ArrayBuffer conversion", 1, function() {
var arrayBuffer;
var testUtf8 = "łużyński";
var blob = new Blob([testUtf8]);
var f = new FileReader();
f.onload = function(e) {
arrayBuffer = e.target.result;
start();
};
equal(utf8ToArrayBuffer(testUtf8), arrayBuffer, "UTF-8 to ArrayBuffer, OK!");
});
是redunant,因爲準備arrayBuffer變量,它與返回的值進行比較其實是一樣的使用utf8ToArrayBuffer(testUtf8)
,所以測試應該是這樣的:
equal(utf8ToArrayBuffer(testUtf8), utf8ToArrayBuffer(testUtf8), "UTF-8 to ArrayBuffer, OK!");
我應該測試這樣的事情還是離開它?或者也許有另一種方法呢?
嗯,我寫了準備比較的價值與我測試的功能相同。然而,實施應該不重要,因爲這是TDD,我必須先寫測試。我現在所知道的是,'utf8ToArrayBuffer(testUtf8)'必須返回arrayBuffer,並對其值進行轉換。現在我必須檢查,如果返回值是確定的。我可以將這個arrayBuffer轉換回文本,但是我將不得不使用另一個函數'arrayBufferToUtf8',它具有與測試相同的問題。所以這就像冗餘的交叉測試。 – 2013-02-15 17:22:34
對我來說這是非常有意義的,因爲這兩個函數的代碼都可以獨立更改。但由於它是一個如此小的功能,你不應該擔心它。如果你想測試的不僅僅是返回值,你可以考慮使用模擬,看看它是否被正確的操縱。 – Odi 2013-02-15 17:49:11