使用Mocha和Chai

时间:2019-01-28 08:18:53

标签: node.js unit-testing express mocha chai

我的控制器中有一个函数,该函数接受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对象更新?

1 个答案:

答案 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)
  });