我的控制器中有一个函数,该函数接受2个参数request和response。
function convertTime (req, res) {
callOtherFunction().then(function(result){
res.status(200).send(result);
}
}
我测试该功能的单元测试功能看起来像这样。
describe('Testing my function ', function() {
var req = {
query: {}
};
var res = {
sendCalledWith: '',
send: function(arg) {
this.sendCalledWith = arg;
},
json: function(err){
console.log("\n : " + err);
},
status: function(s) {this.statusCode = s; return this;}
};
it('Should error out if no inputTime was provided', function() {
convertTime(req,res);
expect(res.statusCode).to.equal(500)
});
});
当我运行单元测试时,它并不是在等待我的回答解决。由于我这里没有等待等待的回调函数,如何使测试等待直到res对象更新?
答案 0 :(得分:1)
更喜欢从使用承诺的函数返回承诺。这自然是在async
函数中完成的。即使生产中不需要它,也可以提高可测试性。
function convertTime (req, res) {
return callOtherFunction().then(function(result){
res.status(200).send(result);
}
然后可以将诺言链接起来:
it('Should error out if no inputTime was provided', async function() {
await convertTime(req,res);
expect(res.statusCode).to.equal(500)
});