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

时间:2015-12-08 09:56:55

标签: javascript node.js supertest

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

render json: @job.as_json(include: {:tasks, promo: {only: :title} }), status: 200

我尝试过util.inherits和prototype .__ proto__但是每次尝试都以&#34结束; expectHeaders不是函数"异常。

这是我最近的尝试:

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

  return this;
};

如何正确添加测试原型的方法?

2 个答案:

答案 0 :(得分:0)

如果你想从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;

答案 1 :(得分:0)

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

   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;
    }