使用Mocha Chai异步功能进行测试

时间:2019-02-24 05:03:22

标签: typescript mocha tdd chai

我有一个带有路由的Hapi JS服务器,这是我的Hapi js服务器

const Hapi = require('hapi');

import { Users } from './users';

const port  3000;

const server = new Hapi.Server();

server.connection({ port });

export async function HapiServer() {

  server.route([
    {
      method: 'GET',

      path: '/getUsers',
      config: {
        handler: async (req: any, reply: any) => {
          try {


            await Users.getUsers(req.params.id)
              .then((result) => {
                reply(result);
              });
          } catch (error) {
            reply(error);
          }
        },



      },
    },
  ]);
  await server.start();
  console.log('server running at', server.info.port);
}


HapiServer();

我使用Mocha和Chai进行单元测试,如下所示:

'use strict';
import { should } from 'chai';
import { HapiServer } from '../../server';
const chai = require('chai');
const chaiHttp = require('chai-http');

chai.use(chaiHttp);

describe('testing users ', () => {
    it('can get all users', async (done) => {
        const result = await chai
        .request(HapiServer)
            .get(/getUsers)
        .then((error, response) => {
            if (error) { done(error); }
            response.should.have.status(200);
            done();            
        }).catch(done);
    });
});

运行测试时,请始终执行以下操作:

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (./server.test.ts)

我已经尝试在package.json中更改我的摩卡配置

mocha --timeout 10000

我可能做错了什么?我了解摩卡支持诺言。

1 个答案:

答案 0 :(得分:2)

我们实际上将所有解决方案(public static Integer[] divisible(Integer[] array, int target) { int j = 0; ArrayList<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < array.length; i++) { if (array[i] % target == 0) { j++; list.add(array[i]); } } Integer answer[] = new Integer[j]; answer = list.toArray(answer); return answer; } async/awaitpromise based)组合在一起用于测试文件中的异步测试。

让我们使用callback done的最新解决方案,它将是:

async/await

请注意,此代码中没有describe('testing users ', () => { it('can get all users', async () => { const response = await chai.request(HapiServer).get('/getUsers'); response.should.have.status(200); }); }); ,也没有使用done

希望有帮助。