我正在尝试使用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
任何帮助都是赞赏的。
谢谢。
答案 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