2013-04-25 61 views
0

示例代碼:如何測試一個類的函數以及如何在測試函數時避免一些代碼?

function TestClass() { 
    var this.name = 'test'; 
    var this.host = '...'; 
    var this.port = '...'; 
    //... 
    this.connection = this.createConnection(....); 
} 

TestClass.prototype.testFunc = function(data) { 
    if(data == this.name) { 
    return true; 
    } else { 
    return false; 
    } 
} 

Testclass.prototype.createConnection = function (...) { 
    //some code 
    //a real HTTP connection will be created 
    //some code 
} 

現在我想測試testFunc,它具有類變量this.name,所以我必須要創建一個TestClass的實例。但是,如果我創建TestClass實例,將創建一個真正的HTTP連接。測試時如何避免這種真正的HTTP連接?

在這樣的情況下,我該如何編寫測試代碼?

回答

0

在實例化TestClass之前,嘗試在測試中簡單地重新定義createConnection

TestClass.prototype.createConnection = function() { 
    console.log("Called redefined createConnection"); 
} 
+0

重寫代碼是唯一的方法嗎?如果只是一個測試人員,沒有權限和負責修改代碼。 – nfpyfzyf 2013-04-25 05:54:32

+0

如果您在測試中有權訪問該課程,則可以修改它。 JavaScript是非常動態的......但是,當然,根據你的'createConnection'方法的實際做法,你可能會在其他某個層次上應用嘲諷。你也可以用[Sinon](http://sinonjs.org/)和'sinon.stub()'實現同樣的效果(雖然我不太確定,因爲它是從「構造函數」中調用它的)。 – NilsH 2013-04-25 05:55:26

0

你應該模擬依賴關係,使請求不是你想要測試的類。看看這個nock,一個HTTP嘲諷和期望庫

相關問題