Testning

Ladda ner följande repo och installera

https://github.com/FEND16/jest-mock-exercise

Finns även länkat via Studentportalen

Async testing

Asynkronitet är oberäkneligt

Därför blir det svårt att testa

fetch(), setTimeout, $.ajax()

  • Responsen är väldigt varierande
  • Svårt att återskapa vissa error
  • Långsamt, vi vill att test ska gå snabbt

Lättast är att fejka allt

  • Mocks
  • Fakes
  • Stubs

Vilket ord som använd är mindre viktigt, benämns lite olika.

3 saker som händer, 3 testfall

  • Hämta data från API
  • Sortera data från API
  • Append to DOM

Att kunna appenda till DOMen samt sortera informationen behöver bara data, data måste inte komma från databasen.

Fejka response från servern

  • npm-paketet fetch-mock eller liknande
  • jest.mock

Inte fejka respons från servern

test('fetches data from actual server', () => {
  return fetchData(url)
    .then(returnData => {
      expect(returnData).toBeDefined();
    })
})

Jest har inbyggd hantering av async om du returnerar något från testfallet

Inte fejka respons från servern

test('fetches data from actual server', async () => {
  const returnData = await fetchData(url);
  expect(returnData).toBeDefined();
})

Med async/await blir det snyggare

Vi kollar testfall med Jest