単体試験Tips(JEST)
単体試験をしていてベストプラクティスと言われていたが、ちゃんと理解していなかったので復習
いろいろやっていると忘れるので、定期的な復習が大事と実感・・・
- jsdom(jestによる仮想DOM)は非同期的に更新される
- そのため、そのあとに同期的にexpectをしても、タイミング的にFailになる
- JSでの非同期処理はイベントループという1本のスレッドで実施される
- そのため、expectもPromiseを使用して空の非同期処理を実行し、イベントループにのせる。そして、thenの中でexpectすれば、jsdom更新後にテストできるので問題なくなる
return Promise.resolve().then(() => { // thenで非同期処理なし
expect(div.textContent).toBe('テストしたい内容'); // この処理をイベントループのスレッドにのせることが目的
});