Jest очистка настроек сервера Express - PullRequest
1 голос
/ 11 июня 2019

Я играю со сторонним программным обеспечением и пытаюсь научиться использовать 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 тестовпроисходит сбой, и я получаю сообщение об ошибке, что сервер уже работает, а также ошибку, которую я пытался сделать вещи / журнал после закрытия шутка.Ясно, что это проблема синхронизации, может кто-нибудь помочь мне понять, почему и как это контролировать?

...