Почему мои тестовые файлы, запускаемые после первого, имеют ошибку тайм-аута? - PullRequest
0 голосов
/ 20 декабря 2018

Я тестирую свои экспресс-конечные точки и любой тестовый файл после первого тайм-аута.Они истекают при попытке выполнить операцию с базой данных.

Я экспортирую свой объект сервера (в index.js), и в этом файле есть сценарии запуска, которые устанавливают промежуточное программное обеспечение, маршруты, соединение с базой данных и т. Д. Я пытался перехватить ошибки в любом коде, который работает набаза данных, но ничего не отображается.Я просто знаю, что время доступа к базе данных истекло.Возможно, я неправильно закрываю его или есть какое-то состояние гонки.

const { Student } = require('../../../models/student');

const mocksdk = require('../../firebaseMock');
const { expect } = require('chai');
const request = require('supertest');
const mongoose = require('mongoose');

describe('authStudent Middleware', () => {

    let token;
    let server;

    before(async () => {
        server = require('../../../index');

        // Create a firebase user and get the token
        mocksdk.auth().autoFlush();
        mocksdk.auth().createUser({
            uid: '123',
            email: 'test@mail.com',
            password: 'test'
        });

        // Assign student role to user
        mocksdk.auth().setCustomUserClaims({ role: 0 });

        const user = await mocksdk.auth().getUser('123');
        token = await user.getIdToken();
    });

    after(async () => {
        await Student.deleteMany({});
        await mongoose.disconnect();
        await server.close();
    });

    it('should return 200 if the token is valid', async () => {
        const res = await request(server)
            .get('/students/me')
            .set('Authorization', 'Bearer ' + token);

        expect(res.status).to.be.equal(200);
    }); 
});

Время ожидания в ловушке после, при удалении из базы данных и в конечной точке студентов / меня при получении информации о пользователе.

Редактировать: я пытался увеличить время ожидания, но это не работает.

1 Ответ

0 голосов
/ 20 декабря 2018

Я решил свою проблему, создав файл testSetup.Если ловушка не находится в блоке описания, она считается корневой ( mocha docs ).Таким образом, в этом testSetup я поставил хук before () и after (), мне потребовался мой index.js, который запускает сервер и настраивает базу данных в хуке before и экспортировал сервер (чтобы его можно было использовать на самом делетестовые файлы).После этого я закрыл соединение с сервером и базой данных.Теперь, похоже, работает, если есть лучший способ или был недостаток в моем исходном коде или этот, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...