Jinlei2000 / Lei_Samuel

1 stars 0 forks source link

Backend: Jest #6

Closed Jinlei2000 closed 9 months ago

Jinlei2000 commented 9 months ago

name: Probleem Jest about: Een probleem bij het testen/maken van een Jest title: Backend: Jest labels: backend assignees: 'Christophe'


Wat loopt er fout?

image image

ik ben een test geschreven voor "should call absenceRepository.save with the correct parameters". Elke keer dat ik test krijg ik de fout dat er een id te kort is.

Waar situeert het probleem zich (beiden aanduiden kan)?

Wat heb je zelf opgezocht? / Wat heeft je team-genoot geprobeerd?

Ik heb mijn stubs van absences gecheckt er zit een id bij. Het is ook toegewezen in mij useValue van mij providers.

Hoe kan het probleem gereproduceerd worden op jullie repo?

Branch: backend-unit-test Go to: cd packages/api Command: npx jest absences/absences.service.spec

Waar staat de code die relevant is (gebruik een permalink)?

https://github.com/Jinlei2000/Lei_Samuel/blob/410c1175ec16a94db7b545ebfa4cf85368ff2bdb/packages/api/src/absences/absences.service.spec.ts#L78-L83

christophe-laprudence-howest commented 9 months ago

Je bent aan het spy-en hoe de save functie IN de service wordt opgeroepen. Maar je kijkt of deze wordt opgeroepen met de result van een de service.

Dit klopt echter niet. Want op het moment dat we de parameter doorsturen, hebben we nog geen id. Dit zal gereturnd worden. Je moet dus met iets anders controleren. Dit is een optie

 // BUG: het faalt omdat er een geen id is
        const myInput: Partial<Absence> = createabsenceInputStub()
        myInput.totalDays = 2 
        expect(saveSPy).toBeCalledWith(myInput)

Het is dit deeltje van de service dat je aan het testen bent

 const a = new Absence()
    a.description = createAbsenceInput.description
    a.userId = createAbsenceInput.userId
    a.type = createAbsenceInput.type
    a.startDate = createAbsenceInput.startDate
    a.endDate = createAbsenceInput.endDate
    a.totalDays = calculateTotalDays(new Date(a.startDate), new Date(a.endDate))

    const newAbsence = await this.absenceRepository.save(a)
Jinlei2000 commented 9 months ago

Dankje!