示例代碼:如何測試一個類的函數以及如何在測試函數時避免一些代碼?
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連接?
在這樣的情況下,我該如何編寫測試代碼?
重寫代碼是唯一的方法嗎?如果只是一個測試人員,沒有權限和負責修改代碼。 – nfpyfzyf 2013-04-25 05:54:32
如果您在測試中有權訪問該課程,則可以修改它。 JavaScript是非常動態的......但是,當然,根據你的'createConnection'方法的實際做法,你可能會在其他某個層次上應用嘲諷。你也可以用[Sinon](http://sinonjs.org/)和'sinon.stub()'實現同樣的效果(雖然我不太確定,因爲它是從「構造函數」中調用它的)。 – NilsH 2013-04-25 05:55:26