У меня есть внутренний сервер, использующий 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% быстрее, но мне это не нужно, или мне это нужно?