end()不是Node Mocha测试中的函数

时间:2018-11-07 09:47:14

标签: node.js testing mocha

我正在尝试使用mocha测试我的Nodejs API的某些服务:

exports.getModelts = function () {
  return new Promise((resolve, reject) => {
    Modelt.find(function (err, modelts) {
      if (err) {
        return reject(err);
      }
      return resolve(modelts);
    });
  });
}

测试:

it('returns expected payload', function (done) {
  service
    .getModelts()
    .end(function (err, res) {
      expect(res.body.length).to.eql(6);
      expect(res.body[0].text).to.eql('Todo 1');

      done();
    });
});

我得到了错误:

TypeError: service.getModelts(...).end is not a function

任何帮助都是赞赏的。

谢谢。

2 个答案:

答案 0 :(得分:1)

.end()supertest的一部分,但您没有在测试(或正在测试的方法)中使用它。

相反,您应该在.then内部进行测试,因为您的方法返回了Promise:

it('returns expected payload', function() {
  return service
    .getModelts()
    .then(function(res) {
      // I expect that the following tests will fail,
      // because they assume that `res` is a `supertest`
      // response, and your method returns a Mongoose
      // query result
      expect(res.body.length).to.eql(6);
      expect(res.body[0].text).to.eql('Todo 1');
    });
});

(还要注意测试函数如何返回 Promise链,并且不使用done;这是因为Mocha支持开箱即用的Promise,并且可以将Promise与回调混合使用引起问题)。

答案 1 :(得分:0)

据我所知,Your email address is not verified不是nodeJS,Mocha或Promise API的一部分-end来自哪里-您是否在使用其他框架?如果是这样-您的测试很可能没有导入包含.end

的框架