Тестирование typeorm repo find с функцией where - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь проверить ошибку перехвата, если результат не найден, используя функцию typeorm find для сущности, с дополнительной опцией, где

Я пытался смоделировать функцию, однако не могу показатьсядля проверки бита где функции.

служебный файл

try {
    historicalTypes = await this.historicalMappingDataTypesRepo.find({
     where: {
          HistoricalTypes: 'Contracts',
        },
    });
}
catch (e) {
  if (e instanceof Error) {
    this.logger.error(`Historical mapping type contracts could not found: ${e.message}`, e.stack);
  } else {
    this.logger.error(`Historical mapping type contracts could not found: ${e}`);
  }
  return;
}

test

const mockHistoricalTypes: HistoricalTypes[] = [
    {
      HistoricalTypeID: 1,
      HistoricalType: 'Contracts',
    },
];

const mockHistoricalMappingTypesRepo = {
    find: ({where}) => Promise.resolve(mockHistoricalMappingTypes),
};

beforeAll(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [
        HistoricalMappingSchedulerService,
        {
          provide: HistoricalMappingSchedulerRepository,
          useValue: mockHistoricalMappingSchedulerRepository,
        },
        {
          provide: getRepositoryToken(HistoricalMappingTypes),
          useValue: mockHistoricalMappingTypesRepo,
        },
      ],
    }).compile();
    service = module.get<HistoricalMappingSchedulerService>(HistoricalMappingSchedulerService);
});

it('should throw an error when historical type id is not found', async () => {
    await mockHistoricalMappingTypesRepo.find({
      where: {
        HistoricalMappingType: 'Testing',
      },
    });
    const mockFn = () => service.ContractHistoricalMapping();
    expect(mockFn).toThrowError();
});

1 Ответ

0 голосов
/ 30 января 2019

Я бы порекомендовал использовать jest.fn() для проверки хранилища:

mockHistoricalMappingTypesRepo = new (jest.fn(() => ({
  find: jest.fn(),
})))();

В своем тесте вы можете затем контролировать, что хранилище возвращает с mockImplementation:

mockHistoricalMappingTypesRepo.find.mockImplementation(() => throw new Error());
try {
  await service.ContractHistoricalMapping()
  fail('Should have thrown error!');
} catch (e) {
  expect(e).toBeInstanceOf(Error);
}
...