Тестирование с помощью асинхронной функции Мокко Чая - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть сервер 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();

Я использую Мокко и Чай для проведения модульного тестирования следующим образом:

'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)

Я уже пытаюсь изменить конфигурацию mocha в package.json

mocha --timeout 10000

Что я могу сделать не так?Я понимаю, что Мокко поддерживает обещания.

1 Ответ

0 голосов
/ 27 февраля 2019

мы практически объединяем все решения (async/await, promise 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 и then. не используется.

Надеюсь, это поможет.

...