Как поделиться тестами в нескольких пакетах с Jest? - PullRequest
2 голосов
/ 24 сентября 2019

Я обнаружил, что у меня много повторных тестов в нескольких интеграционных тестах в REST API Node.js.Так, например, я тестирую недопустимые запросы для каждой конечной точки, где я ожидаю, что ошибка всегда будет иметь одинаковые свойства.

import { app } from 'server';
import * as request from 'supertest';

describe('Authentication tests', () => {
    describe('POST /login', () => {
        // other test cases
        // describe('valid request should ...', () => {...})

        describe('invalid requests with missing fields', () => {
            let response = null;

            beforeAll(async () => {
                await request(app)
                    .post('/login')
                    .expect('Content-Type', 'application/json; charset=utf-8')
                    .field('email', 'invalid@test.com')
                    .then(res => {
                        response = res;
                    });
            });

            it('should return an invalid status code', () => {
                expect(response.status).toBe(400);
            });

            it('should return a valid error schema', () => {
                expect(typeof response.body).toBe('object');
                expect(response.body).toHaveProperty('error');
                expect(response.body.error).toHaveProperty('code');
                expect(response.body.error).toHaveProperty('message');
            });

            it('should return an error with explicit message', () => {
                expect(response.body.error).toHaveProperty('message');
            });
        });
    });
});

Предоставляет ли Jest какой-либо способ создания некоторых тестов общего ресурса, чтобы я мог инкапсулировать эту проверку ошибок иобъявить это в других случаях, чтобы избежать повторения?

...