Website-Suche

typescript - Jest Describe-Suite schlägt fehl, aber der einzelne Test läuft erfolgreich


Wenn ich jeden Test einzeln ausführe, bestehen beide. Aber wenn ich sie zusammen mit npm test ausführe, schlägt der zweite Test fehl:

Expected number of calls: 2
Received number of calls: 4

Ich habe den folgenden Code: (kurz und gekürzt)

describe('checkDonations', () => {
test('it should call twice (test 1)', async () => {
    const axiosSpy = jest.spyOn(axios.default, 'get')
        .mockImplementation(() => {
            return new Promise(resolve => {
                resolve({
                    data: {
                        status: [
                            {
                                "created": "2020-04-08 21:20:17",
                                "timestamp": "1586373617",
                                "statusName": "new"
                            }
                        ]
                    }
                })
            })
        });

    await checkDonations(null, {});

    expect(axiosSpy).toHaveBeenCalledTimes(2);
})

test('it should call twice (test 2)', async () => {
    const axiosSpy = jest.spyOn(axios.default, 'get')
        .mockImplementation(() => {
            return new Promise(resolve => {
                resolve({
                    data: {
                        status: [
                            {
                                "created": "2020-04-08 21:20:17",
                                "timestamp": "1586373617",
                                "statusName": "final_success"
                            }
                        ]
                    }
                })
            })
        });

    await checkDonations(null, {});

    expect(axiosSpy).toHaveBeenCalledTimes(2);
})
})

Die Tests werden gekürzt, um das Problem darzustellen. Wie Sie sehen können, sind sie fast gleich und jeder hat seinen eigenen Spy. Nur der Rückgabewert des axiosSpy ist anders. Daher kann ich ihn nicht in before each setzen.

Warum schlägt der zweite Test fehl, wenn ich sie mit npm test ausführe?

Antwort #1

Du solltest vielleicht deine Mocks in einem beforeEach zurücksetzen? Ich benutze so etwas wie den folgenden Code:

beforeEach(() => jest.resetAllMocks())

Antwort #2

Löschen Sie den durch den Build generierten Ordner (z. B.: dist) und versuchen Sie es erneut. Es funktioniert bei mir.

Verwandte Artikel