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()
实现同样的效果(尽管我不太确定,因为它从“构造函数”调用它)。