【问题标题】:Unit testing controller functions in Nodejs using Mocha and Chai使用 Mocha 和 Chai 在 Nodejs 中单元测试控制器功能
【发布时间】:2019-01-28 08:18:53
【问题描述】:

我的控制器中有一个函数,它接受 2 个参数请求和响应。

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 对象更新?

【问题讨论】:

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


    【解决方案1】:

    更喜欢从使用它们的函数返回 Promise。这自然是在async 函数中完成的。即使在生产中不需要这样做,这也提高了可测试性。

    function convertTime (req, res) {
       return callOtherFunction().then(function(result){
           res.status(200).send(result);
        }
    

    然后可以链接一个promise:

      it('Should error out if no inputTime was provided', async function() {
        await convertTime(req,res);
        expect(res.statusCode).to.equal(500)
      });
    

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多