Le test ne génère pas d'erreur lorsque la valeur attendue est à l'intérieur de la boucle
P粉060112396
P粉060112396 2023-09-18 15:34:42
0
1
477

J'essaie de refactoriser certains tests unitaires, mais j'ai découvert que l'attente à l'intérieur d'une boucle ne fonctionnait pas. Je suis en train de parcourir une énumération. J'ai le code suivant :

Des solutions ou solutions de contournement ?

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

répondre à tous (1)
P粉545910687

Je pense que dans votre cas, le problème est que la carte ne gère pas les opérations asynchrones, donc à la fin de la boucle il y a plusieurs promesses en attente. Vous devez attendre que toutes les promesses de la carte soient résolues/rejetées.

Vous pouvez utiliser cette fonction pour gérer toutes les promesses.

export async function mapAsync( elements: Promise[] | T[], mapAction: (arg: T) => Promise, ): Promise { const results: R[] = []; for (const element of await Promise.all(elements)) { const mappedItem = await mapAction(element); results.push(mappedItem); } return results; }
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!