Jestを使用してスローされた例外の型をテストする方法


  1. expectを使用した例外の型のテスト: Jestでは、expect関数を使用して例外がスローされることをテストすることができます。また、toThrowマッチャーを使用して特定の例外の型をテストすることもできます。例えば、以下のようなコードを書くことができます:

    function throwError() {
     throw new Error('Something went wrong');
    }
    test('throwError throws an Error', () => {
     expect(throwError).toThrow(Error);
    });

    上記の例では、throwError関数がErrorをスローすることを期待しています。もし関数が異なる例外をスローする場合は、例外の型を指定する必要があります。

  2. try-catchブロックを使用した例外の型のテスト: Jestでは、try-catchブロックを使用して例外の型をテストすることもできます。以下はその例です:

    function throwError() {
     throw new TypeError('Invalid argument');
    }
    test('throwError throws a TypeError', () => {
     try {
       throwError();
     } catch (error) {
       expect(error).toBeInstanceOf(TypeError);
     }
    });

    上記の例では、throwError関数がTypeErrorをスローすることをテストしています。toBeInstanceOfマッチャーを使用して、例外が指定した型であることを確認しています。

  3. async/awaitを使用した例外の型のテスト: もし非同期のコードで例外をテストする場合は、async/awaitを使用することができます。以下はその例です:

    async function asyncError() {
     throw new SyntaxError('Syntax error');
    }
    test('asyncError throws a SyntaxError', async () => {
     await expect(asyncError()).rejects.toThrow(SyntaxError);
    });

    上記の例では、asyncError関数がSyntaxErrorをスローすることをテストしています。rejectsマッチャーを使用して、非同期の関数が指定した例外をスローすることを確認しています。

これらはJestを使用して例外の型をテストするいくつかの一般的な方法です。適切な方法を選択するには、テスト対象のコードや要件に基づいて判断してください。