Ujian tidak membuang ralat apabila nilai yang dijangkakan berada di dalam gelung
P粉060112396
P粉060112396 2023-09-18 15:34:42
0
1
526

Saya cuba memfaktorkan semula beberapa ujian unit tetapi mendapati jangkaan dalam gelung tidak berfungsi. Saya sedang menggelung melalui enum. Saya mempunyai kod berikut:

Ada penyelesaian atau penyelesaian?

it('should block approval of ads if status is not in pending revision', async () => {
  mockAdsRepository.findOne = jest.fn(() =>
    Promise.resolve({ ...adsDto, status: Status.REJECTED }),
  );
  await expect(service.approve(1, 1)).rejects.toThrow(BadRequestException);

  mockAdsRepository.findOne = jest.fn(() =>
    Promise.resolve({ ...adsDto, status: Status.UNPUBLISH }),
  );
  await expect(service.approve(1, 1)).rejects.toThrow(BadRequestException);

  // error trigger, working
  // mockAdsRepository.findOne = jest.fn(() =>
  //   Promise.resolve({ ...adsDto, status: Status.PENDING_REVISION }),
  // );
  // await expect(service.approve(1, 1)).rejects.toThrow(BadRequestException);

  //refactor
  Object.keys(Status).map(async (key) => {
    if (Status[key] !== Status./*changing this value for error triggers not working*/ ) {
      mockAdsRepository.findOne = jest.fn(() =>
        Promise.resolve({ ...adsDto, status: Status[key] }),
      );

      await expect(service.approve(1, 1)).rejects.toThrow(
        BadRequestException,
      );
    }
  });
});

P粉060112396
P粉060112396

membalas semua(1)
P粉545910687

Saya rasa, dalam kes anda masalahnya ialah peta tidak mengendalikan operasi tak segerak, jadi pada penghujung gelung terdapat beberapa janji dalam keadaan belum selesai. Anda harus menunggu sehingga semua janji dalam peta diselesaikan/ditolak.

Anda boleh menggunakan fungsi ini untuk mengendalikan semua janji.

export async function mapAsync<T, R>(
  elements: Promise<T>[] | T[],
  mapAction: (arg: T) => Promise<R>,
): Promise<R[]> {
  const results: R[] = [];
  for (const element of await Promise.all(elements)) {
    const mappedItem = await mapAction(element);
    results.push(mappedItem);
  }
  return results;
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!