Я играю со сторонним программным обеспечением и пытаюсь научиться использовать Jest для тестирования.Но я получаю сообщение об ошибке, когда он должен очистить пакет тестирования, подозреваю, из-за асинхронного кода.
Когда я запускаю Jest CLI с --runInBand, он прекрасно работает, но я хочу понять и исправить это такэто будет работать без флага.\
Пример одного из тестовых файлов
const {Genre} = require('../../../models/genre');
const {mongoose} = require('../../../app');
const request = require('supertest');
let server;
describe('testing GET for genres', function() {
beforeEach( function() {
server = require('../../../app').server;
});
afterEach(async function() {
await Genre.deleteMany({});
await mongoose.connection.close();
server.close();
});
it('should create a genre',async function() {
let genre = {
name: "abcde"
};
const result = await request(server).post('/api/genres').send(genre);
return expect(result).toBeDefined();
}) ;
});
Пример другого:
const {User} = require('../../../models/user');
const request = require('supertest');
const {mongoose} = require('../../../app');
let server;
describe('testing POST for users', function() {
beforeEach(function() {
server = require('../../../app').server;
});
afterEach(async function() {
await User.deleteMany({});
await mongoose.connection.close();
server.close();
});
it('should create a user',async function() {
let user = {
email: "testing123@gmail.com",
password: "Yoyoyoy"
};
const result = await request(server).post('/api/users').send(user);
expect(result.status).toBe(200);
expect(result.body).toHaveProperty("email", "testing123@gmail.com");
expect(result.body).toHaveProperty("isAdmin", false);
}) ;
});
И когда я запускаю тест npm, Вкл из 2 тестовпроисходит сбой, и я получаю сообщение об ошибке, что сервер уже работает, а также ошибку, которую я пытался сделать вещи / журнал после закрытия шутка.Ясно, что это проблема синхронизации, может кто-нибудь помочь мне понять, почему и как это контролировать?