NodeJS + PostgreSQL интеграционное тестирование - PullRequest
0 голосов
/ 28 июня 2019

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

Моя настройка - NodeJS, PostgresСиквелиз, Карма + Мокко.В настоящее время перед запуском тестов создается и переносится новая база данных, после каждого теста я запускаю необработанный запрос, который усекает все таблицы, и после завершения всех тестовых случаев тестовая база данных удаляется.Как вы, наверное, догадались, время выполнения таких тестов довольно медленное.

Мне было интересно, есть ли способ ускорить процесс.Есть ли в памяти база данных psql, которую я мог бы использовать для своих тестовых случаев (я некоторое время искал такую, но не смог ее найти), или что-то в этом роде.

Точнее,Я ищу способ очистки базы данных после того, как тест записал в нее что-то, не требуя усечения всех таблиц после каждого теста.

1 Ответ

0 голосов
/ 02 июля 2019

Включено https://stackoverflow.com/a/12082038/2018521 в мою очистку:

afterEach(async () => {
  await db.sequelize.query(`
    DO
    $func$
    BEGIN
      EXECUTE
      (SELECT 'TRUNCATE TABLE ' || string_agg(oid::regclass::text, ', ') || ' RESTART IDENTITY CASCADE'
        FROM   pg_class
        WHERE  relkind = 'r'  -- only tables
        AND    relnamespace = 'public'::regnamespace
      );
    END
    $func$;
  `);
});

Усечение теперь выполняется почти мгновенно.

...