You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constbutton=screen.getByText('make not important')
279
-
userEvent.click(button)
280
+
awaituser.click(button)
280
281
281
282
expect(mockHandler.mock.calls).toHaveLength(1)
282
283
})
@@ -287,15 +288,21 @@ Testissä on muutama mielenkiintoinen seikka. Tapahtumankäsittelijäksi annetaa
287
288
```js
288
289
constmockHandler=jest.fn()
289
290
```
291
+
292
+
Jotta renderöidyn komponentin kanssa voi vuorovaikuttaa tapahtumien avulla, tulee ensin aloittaa uusi sessio. Tämä onnistuu userEvent-olion [setup](https://testing-library.com/docs/user-event/setup/)-metodin avulla:
293
+
294
+
```js
295
+
constuser=userEvent.setup()
296
+
```
290
297
291
298
Testi hakee renderöidystä komponentista napin <i>tekstin perusteella</i> ja klikkaa sitä:
292
299
293
300
```js
294
301
constbutton=screen.getByText('make not important')
295
-
userEvent.click(button)
302
+
awaituser.click(button)
296
303
```
297
304
298
-
Klikkaaminen tapahtuu userEvent-olion metodin [click](https://testing-library.com/docs/ecosystem-user-event/#clickelement-eventinit-options) avulla.
305
+
Klikkaaminen tapahtuu userEvent-olion metodin [click](https://testing-library.com/docs/user-event/convenience/#click) avulla.
299
306
300
307
Testin ekspektaatio varmistaa, että <i>mock-funktiota</i> on kutsuttu täsmälleen kerran:
Käytimme jo edellisissä testeissä [userEvent]([user-event](https://testing-library.com/docs/ecosystem-user-event/))-kirjaston _fireEvent_-funktiota nappien klikkaamiseen:
419
+
Käytimme jo edellisissä testeissä [user-event](https://testing-library.com/docs/user-event/intro)-kirjaston _click_-metodia nappien klikkaamiseen:
410
420
411
421
```js
412
422
constbutton=screen.getByText('show...')
413
-
userEvent.click(button)
423
+
awaituser.click(button)
414
424
```
415
425
416
-
Käytännössä siis loimme <i>userEventin</i> avulla tapahtuman <i>click</i> -nappia vastaavalle komponentille. Voimme simuloida myös lomakkeelle kirjoittamista <i>userEventin</i> avulla.
426
+
Käytännössä siis loimme metodin avulla <i>click</i>-tapahtuman metodin argumenttina annatulle komponentille. Voimme simuloida myös lomakkeelle kirjoittamista <i>userEventin</i>-olion avulla.
417
427
418
428
Tehdään testi komponentille <i>NoteForm</i>. Lomakkeen koodi näyttää seuraavalta:
test('<NoteForm /> updates parent state and calls onSubmit', () => {
479
+
test('<NoteForm /> updates parent state and calls onSubmit', async () => {
480
+
constuser=userEvent.setup()
470
481
constcreateNote=jest.fn()
471
482
472
483
render(<NoteForm createNote={createNote} />)
473
484
474
485
constinput=screen.getByRole('textbox')
475
486
constsendButton=screen.getByText('save')
476
487
477
-
userEvent.type(input, 'testing a form...')
478
-
userEvent.click(sendButton)
488
+
awaituser.type(input, 'testing a form...')
489
+
awaituser.click(sendButton)
479
490
480
491
expect(createNote.mock.calls).toHaveLength(1)
481
492
expect(createNote.mock.calls[0][0].content).toBe('testing a form...')
@@ -484,7 +495,7 @@ test('<NoteForm /> updates parent state and calls onSubmit', () => {
484
495
485
496
Syötekenttä etsitään metodin [getByRole](https://testing-library.com/docs/queries/byrole) avulla.
486
497
487
-
Syötekenttään kirjoitetaan userEvent:in tarjoaman metodin [type](https://testing-library.com/docs/ecosystem-user-event/#typeelement-text-options) avulla.
498
+
Syötekenttään kirjoitetaan metodin [type](https://testing-library.com/docs/user-event/utility#type) avulla.
488
499
489
500
Testin ensimmäinen ekspektaatio varmistaa, että lomakkeen lähetys on aikaansaanut tapahtumankäsittelijän _createNote_ kutsumisen. Toinen ekspektaatio tarkistaa, että tapahtumankäsittelijää kutsutaan oikealla parametrilla, eli että luoduksi tulee samansisältöinen muistiinpano kuin lomakkeelle kirjoitetaan.
490
501
@@ -533,7 +544,7 @@ Virheilmoitus ehdottaa käytettäväksi metodia <i>getAllByRole</i> (jos tilanne
533
544
```js
534
545
constinputs=screen.getAllByRole('textbox')
535
546
536
-
userEvent.type(input[0], 'testing a form...')
547
+
awaituser.type(inputs[0], 'testing a form...')
537
548
```
538
549
539
550
Metodi <i>getAllByRole</i> palauttaa taulukon, ja oikea tekstikenttä on taulukossa ensimmäisenä. Testi on kuitenkin hieman epäilyttävä, sillä se luottaa tekstikenttien järjestykseen.
0 commit comments