摩卡:未捕获的AssertionError

时间:2018-11-05 11:03:01

标签: javascript api testing mocha

我具有以下API测试功能:

   it('should return details of last order', function(done) {
    tempUrl="/rest/v1/user/orders/"+dineInOrderDetails[0];
    request 
      .get(tempUrl)
      .set(config.headers)
      .set('Authorization', 'Bearer ' + auth_token)
      .end(function(err,res){
        logger.info(config.logToConsole(res.request.url,res.request._data));
        assert.equal(res.status,200);
        assert.equal(res.body.order.uuid, dineInOrderDetails[0]);
        assert.equal(res.body.order.totalGross, dineInOrderDetails[1]);
        assert.equal(res.body.order.totalAmount, dineInOrderDetails[2]);
        done(err);
      });        
   });

如果在控制台中声明失败,它将返回我

      Uncaught AssertionError: expected '6.95' to equal '36.90'
  + expected - actual

  -6.95
  +36.90

避免未捕获的断言错误的最佳方法是对所有断言行的每个测试函数进行一次try / catch? 还是我可以做得更好?

   it('should return details of last order2', function(done) {
    tempUrl="/rest/v1/user/orders/"+dineInOrderDetails[0];
    request 
      .get(tempUrl)
      .set(config.headers)
      .set('Authorization', 'Bearer ' + auth_token)
      .end(function(err,res){
        try{
          logger.info(config.logToConsole(res.request.url,res.request._data));
          assert.equal(res.status,200);
          assert.equal(res.body.order.uuid, dineInOrderDetails[0]);
          assert.equal(res.body.order.totalGross, dineInOrderDetails[1]);
          assert.equal(res.body.order.totalAmount, dineInOrderDetails[2]);
          done(err);
        }
        catch(e){
          done(e);
        }
      });        
   });

1 个答案:

答案 0 :(得分:0)

好的,我们可以将消息放在断言行中,并且控制台中没有未捕获的断言错误

assert.equal(res.body.order.totalGross, dineInOrderDetails[1],'assertion alert');