Как можно смоделировать модуль базы данных nest typeorm в сквозных (e2e) тестах? - PullRequest
0 голосов
/ 11 октября 2019

все. Включите подробную информацию о своей цели: я пытаюсь смоделировать хранилище в тесте e2e

Опишите ожидаемые и фактические результаты: у запроса к серверу не будет доступа к постоянному слою. Мы должны смоделировать соединение и хранилище.

Я обновил код, но хранилище все еще не переопределено. Может быть, мне нужно реализовать это через поставщика Facade

Вы можете поиграть с кодом здесь Мой код

1 Ответ

0 голосов
/ 19 октября 2019

Вы можете использовать Прикрепления TypeORM , они позволяют создавать осветительные приборы / поддельные данные для использования при разработке или тестировании кода.

npm install typeorm-fixtures-cli --save-dev

Приспособления могут быть выражены в файлах YAML. Например:

entity: User
items:
  user{1..10}:
    username: bob
    fullname: Bob
    birthDate: 1980-10-10
    email: bob@example.org
    favoriteNumber: 42

Библиотека объединяет Faker , чтобы помочь генерировать поддельные данные, такие как имена, адреса электронной почты, номера телефонов и т. Д. Вы также можете установить отношения между различными приборами.

После этого вы можете загрузить приборы и использовать их с TypeORM.

const loadFixtures = async (fixturesPath: string) => {
  let connection;

  try {
    connection = await createConnection();
    await connection.synchronize(true);

    const loader = new Loader();
    loader.load(path.resolve(fixturesPath));

    const resolver = new Resolver();
    const fixtures = resolver.resolve(loader.fixtureConfigs);
    const builder = new Builder(connection, new Parser());

    for (const fixture of fixturesIterator(fixtures)) {
      const entity = await builder.build(fixture);
      await getRepository(entity.constructor.name).save(entity);
    }
  } catch (err) {
    throw err;
  } finally {
    if (connection) {
      await connection.close();
    }
  }
};

Это можно объединить с базой данных SQLLite в памяти. Просто попросите TypeORM создать базу данных на основе метаданных сущности. Используйте приспособления для загрузки поддельных данных в базу данных в памяти, а затем запустите свои тесты.

...