Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向nodejs supertest模块添加方法?_Javascript_Node.js_Supertest - Fatal编程技术网

Javascript 如何向nodejs supertest模块添加方法?

Javascript 如何向nodejs supertest模块添加方法?,javascript,node.js,supertest,Javascript,Node.js,Supertest,我正试图给它添加一些方便的方法。到目前为止,我能够做到这一点的唯一方法是将它们直接添加到lib/test.js中的模块源代码中: Test.prototype.expectHeaders = function (a) { for (var header in a) { this._asserts.push(this._assertHeader.bind(this, { name: '' + header, value: a[header]

我正试图给它添加一些方便的方法。到目前为止,我能够做到这一点的唯一方法是将它们直接添加到lib/test.js中的模块源代码中:

Test.prototype.expectHeaders = function (a)
{
  for (var header in a)
  {
    this._asserts.push(this._assertHeader.bind(this,
    {
      name: '' + header,
      value: a[header]
    }));
  }

  return this;
};
我尝试了通过util.inherits和prototype。但是每次尝试都以“expectHeaders不是函数”异常结束

以下是我的最新尝试:

var supertest = require('supertest'),
  util = require('util');

var SccTest = function()
{
};

SccTest.prototype.__proto__ = supertest.prototype;

SccTest.expectHeaders = function (a)
{
  for (var header in a)
  {
    this._asserts.push(this._assertHeader.bind(this,
    {
      name: '' + header,
      value: a[header]
    }));
  }

  return this;
};

util.inherits(SccTest, supertest);
module.exports = SccTest;

如何正确地将方法添加到测试原型中?

如果希望从supertest对象继承,则不需要手动将原型指向supertest。您只需调用util.inherites方法:

var supertest = require('supertest'),
    util = require('util');

var SccTest = function(){
};
util.inherits(SccTest, supertest);

SccTest.prototype.expectHeaders = function (a){
  ...
};
module.exports = SccTest;

好的,这段代码应该会有帮助

   var supertest = require('supertest'),
      util = require('util');
    var SccTest=function (arguments) {
      var sccTest = {}
      sccTest.__proto__ = supertest(arguments)
      sccTest.expectHeaders = function (a)
      {
        for (var header in a)
        {
          this._asserts.push(this._assertHeader.bind(this,
          {
            name: '' + header,
            value: a[header]
          }));
        }
        return this;
      };
      return sccTest;
    }

不起作用。我做了scctest=require('./scctest');scctest(”;throws无法读取未定义的属性“get”