Поток тестирования с использованием prisma и graphql

Я использую prisma-graphql для внутреннего сервера и jest & supertest для тестирования запросов graphql. Для среды тестирования я хотел бы создать базу данных в памяти для создания и извлечения данных на этапе тестирования. Мои вопросы,

  1. Как правильно настроить тестовую БД для клиента prisma? Нужно ли настраивать БД памяти на этапе before all? как ниже?

    //setup.js for test
    
    beforeAll(async() => {
      db = new sqlite3.Database(':memory:', (err) => {
        if (err) {
          return console.error(err.message);
        }
        console.log('Connected to the in-memory SQlite database.');
      });
    })
    
  2. Как и когда я могу запускать команды для prisma? Например, мне нужно запустить приведенные ниже команды для базы данных памяти, чтобы создать таблицы. https://github.com/prisma/prisma/issues/732 кажется предлагает что в миграции памяти нет смысла - другими словами она не поддерживает такое?

    npx prisma migrate --experimental save/up
    npx prisma generate
    

person Sanghyun Kim    schedule 15.09.2020    source источник


Ответы (1)


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

Я создал репозиторий здесь, который выполняет интеграционные тесты для реальной БД, и это для GraphQL. . Они содержат всю настройку Jest от начала до конца.

person Ryan    schedule 15.09.2020
comment
Спасибо. Что касается PrismaTestEnvironment, вы программно создаете тестовую БД для тестирования преобразователей Graphql? - person Sanghyun Kim; 15.09.2020
comment
Кроме того, есть ли способ установить поставщика базы данных с помощью переменной среды? - person Sanghyun Kim; 15.09.2020
comment
Да, я автоматически создаю тестовую БД для каждого набора тестов. Что касается вашего второго вопроса, невозможно передать поставщика базы данных через переменную среды, но вы можете передать несколько поставщиков, используя это - person Ryan; 15.09.2020
comment
Спасибо за ответы. Еще один вопрос: есть ли у вас какие-либо идеи, что могло пойти не так, если при запуске теста появляется сообщение «таблица ~~ не существует в текущей базе данных»? Тестовый код хорошо работает в моей локальной конфигурации, но в EC2 он не говорит, что таблицы созданы неправильно. Сначала я сомневался, что миграция npm up --experimental не работает, но когда я запускаю ее вручную, она работает нормально . Не знаю, что не так (я проверил права доступа к файлам, удалил целые модули узла и переустановил, выполнил в разных каталогах и т. д..) - person Sanghyun Kim; 16.09.2020
comment
Я понял. Как ни странно, я должен сначала выполнить миграцию, сохранить, а затем выполнить миграцию, чтобы отразить схему в базе данных sqlite. Есть идеи, почему это так? - person Sanghyun Kim; 16.09.2020
comment
Сохранение миграции не требуется, так как миграция уже выполнена в вашей системе. Всего migrate up нужно, чтобы добавить все таблицы в БД. Вы можете клонировать мой репозиторий, запустить его и сравнить со своей реализацией. - person Ryan; 17.09.2020