Jest - スコープとフックの概要
はじめに
Jestのドキュメントを読んでまとめていきます。
ところどころ気になった部分を調べて補足したり解釈を入れています。
https://jestjs.io/ja/docs/setup-teardown
スコープとフックの概要
テストフレームワークでは、テストの実行前後に特定のコードを実行するためのフックが提供されています。
これらのフックは、テストのセットアップやクリーンアップなどに使用されます。
beforeAll
: すべてのテストの前に一度だけ実行される。afterAll
: すべてのテストの後に一度だけ実行される。beforeEach
: 各テストの前に実行される。afterEach
: 各テストの後に実行される
全体のフック
最上位レベルのフックは、ファイル内のすべてのテストに適用されます。
beforeEach(() => { return initializeCityDatabase(); }); test('city database has Vienna', () => { expect(isCity('Vienna')).toBeTruthy(); });
この例では、各テストの前に都市データベースを初期化しています。
ネストされたフック
describe
ブロック内にフックを配置すると、そのブロック内のテストだけに適用されます。
javascriptCopy code describe('matching cities to foods', () => { beforeEach(() => { return initializeFoodDatabase(); }); test('Vienna <3 veal', () => { expect(isValidCityFoodPair('Vienna', 'Wiener Schnitzel')).toBe(true); }); });
この例では、特定のテストブロック内で食品データベースを初期化しています。
フックの実行順序
フックは特定の順序で実行されます。
最上位の beforeEach
は describe
内の beforeEach
より前に実行されます。
以下のコードの出力は、フックの実行順序を示しています。
1 - beforeAll 1 - beforeEach 1 - test 1 - afterEach 1 - afterAll 2 - beforeAll 2 - beforeEach 2 - test 2 - afterEach 2 - afterAll
この順序により、テストのセットアップとクリーンアップが柔軟に行え、異なるスコープで異なる動作を定義することが可能になります。
おしまい
コメント
本記事の内容は以上になります!
プログラミングスクールのご紹介 (卒業生より)
お世話になったプログラミングスクールであるRUNTEQです♪
こちらのリンクを経由すると1万円引きになります。
RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。
もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。