Node.js 如何测试一个类的一个函数,以及在测试函数时如何避免一些代码?
示例代码:Node.js 如何测试一个类的一个函数,以及在测试函数时如何避免一些代码?,node.js,testing,mocha.js,Node.js,Testing,Mocha.js,示例代码: 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
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连接
在这种情况下,如何编写测试代码?在实例化
TestClass
之前,尝试在测试中简单地重新定义createConnection
TestClass.prototype.createConnection = function() {
console.log("Called redefined createConnection");
}
您应该模拟使请求不是您想要测试的类的依赖关系。看看这个,HTTP模拟和期望库重写代码是唯一的方法吗?如果只是一个测试人员,没有修改代码的权限和责任该怎么办?如果你在测试中有权访问该类,那么你就有权修改它。JavaScript是非常动态的。。。当然,根据
createConnection
方法的实际功能,您可能可以在其他级别应用模拟。您也可以通过和sinon.stub()
实现同样的效果(尽管我不太确定,因为它从“构造函数”调用它)。