Почему мое приложение коа истекает при тестировании маршрута с помощью Jest / Supertest - PullRequest
0 голосов
/ 06 апреля 2020

Краткое описание проблемы Получение : Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Timeout при попытке запустить тест с Jest и супертестом.

Спецификации Проект Koa2, тестирование Jest / Supertest, Babel 7.9 .0 рекомендуемая конфигурация

Что я пробовал У меня есть простой тест из того же файла, который я пропустил для краткости из приведенного ниже кода. Я также попытался отправить HTTP-запрос из браузера - этот файл импортируется и «прослушивается» в файле сервера. Запрос не выполняется, потому что он заблокирован политикой CORS - я думаю, что это проблема для другого дня, и это не влияет на время ожидания моего теста.

Я также пытался удалить .callback() из супер-теста (. .) Звоните:

const response = await supertest(app).post('/save-material');

  • , в этот момент я получаю TypeError: app.dress is not a function.

Вот содержимое моего тестового файла:

process.env.NODE_ENV = 'test';

const app = require('../../src/server/app.js')
const supertest = require('supertest')
 
test('save-material returns response', async() => {
    const response = await supertest(app.callback()).post('/save-material');
    expect(response.status).toBe(200);
    expect(response.body.status).toBe('success');
    expect(response.body.msg).toBe('Material saved')
});

Вот содержимое импортированного файла (приложение. js) сверху:

require('@babel/register'); // not entry point - but is entry point for some tests
const Koa = require('koa');
var Router = require('koa-router')
const app = new Koa();
const router = new Router();

router
    .post('/save-material', async(ctx) => {
        ctx.response = {
            status: 'success',
            msg: 'Material saved'
        }
        return ctx;
    })

app.use(router.routes());
app.use(router.allowedMethods());

module.exports = app;
...