Yanonoblog!

こつこつと

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);
  });
});

この例では、特定のテストブロック内で食品データベースを初期化しています。

フックの実行順序

フックは特定の順序で実行されます。

最上位の beforeEachdescribe 内の beforeEach より前に実行されます。

以下のコードの出力は、フックの実行順序を示しています。

1 - beforeAll
1 - beforeEach
1 - test
1 - afterEach
1 - afterAll
2 - beforeAll
2 - beforeEach
2 - test
2 - afterEach
2 - afterAll

この順序により、テストのセットアップとクリーンアップが柔軟に行え、異なるスコープで異なる動作を定義することが可能になります。

おしまい

コメント

本記事の内容は以上になります!


プログラミングスクールのご紹介 (卒業生より)

お世話になったプログラミングスクールであるRUNTEQです♪

https://runteq.jp/r/ohtFwbjW

こちらのリンクを経由すると1万円引きになります。

RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。

もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。

https://twitter.com/outputky