Исправлена ​​проблема с Jest-тестированием, включая `--runInBand`, но я не совсем понимаю, почему - PullRequest
0 голосов
/ 14 января 2020

У меня есть внутренний сервер, использующий Node и Express. js, и я использую Jest в качестве моей тестовой среды. У меня была проблема, которую я не мог понять. Позвольте мне сначала поделиться своим кодом:

// user.model.test.ts

describe('User model test', () => {
  let connection: Connection;

  beforeEach(async () => {
    connection = await createConnection(ormConfig);
  });

  afterEach(async () => {
    connection.close();
  });

  it('should not create a user with the same email', async () => {
    await User.create({
      username: 'bar',
      email: 'foo@gmail.com',
      password: 'password'
    }).save();

    const user2 = User.create({
      username: 'foo',
      email: 'foo@gmail.com',
      password: 'password'
    });

    await expect(user2.save()).rejects.toThrowError();
  });
}

Как вы можете видеть здесь, я создаю отдельное соединение с моей базой данных разработки, здесь хуки прикреплены к test_db.

У меня есть еще один тест на контроллерах.

user.controller.test.ts

describe('Get all users', () => {
  let connection: Connection;

  beforeEach(async () => {
    connection = await createConnection(ormConfig);
  });

  afterEach(async () => {
    connection.close();
  });

  it('should return status code 200', async (done) => {
    User.create({
      username: 'test',
      email: 'foobar@gmail.com',
      password: 'password'
    });

    const res = await rekwest.get('/api/v1/users');
    expect(res.status).toBe(200);
    // console.log(res.st);
    done();
  });

});

То же самое, что я делаю здесь. Я создаю тест и присоединяюсь к test_db и ожидаю другого пула соединений.

Теперь ошибка на контроллере странная User table already exists. А на модели у меня ошибка test_db doesn't exists. Теперь, если я удалил зацепки в тесте контроллера, ошибки исчезнут, но я не могу проверить контроллер.

Так что я нашел ссылку на то, как протестировать MongoDB с использованием Jest, у нас та же идея, но я не runInBand Поэтому я добавил его jest --runInBand и по какой-то причине он исправляет мои ошибки. Может кто-нибудь объяснить мне, что случилось? В документации Jest в основном говорится, что ваш тест будет работать на 50% быстрее, но мне это не нужно, или мне это нужно?

...