はじめに
この記事では、expect 関数を使用した値の比較と期待結果の検証、そしてテストの合格と不合格の判断方法について詳しく解説していきます。
expect 関数を使用した値の比較と期待結果の検証
expect 関数は、テスト中に検証する値と期待結果を比較するために使用されます。
以下のように、様々なアサーションメソッドを使って値を検証することができます。
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3); // 1 + 2 の結果が 3 であることを検証
expect(sum(2, 3)).not.toBe(5); // 2 + 3 の結果が 5 でないことを検証
expect(sum(2, 3)).toBeGreaterThan(4); // 2 + 3の結果が 4 より大きいことを検証
expect(sum(2, 3)).toBeLessThanOrEqual(5); // 2 + 3 の結果が 5 以下であることを検証
});
よく利用される expect 関数を紹介していきます。
toBe(expected)
厳密な等価性(===)を使用して値を比較します。
expect(result).toBe(42);
toEqual(expected)
オブジェクトや配列などの深い比較を行います。
expect(obj).toEqual({ prop: 'value' });
toEqual(expected)
オブジェクトや配列などの深い比較を行います。
expect(obj).toEqual({ prop: 'value' });
toBeNull()
値が null であるかを確認します。
expect(result).toBeNull();
toBeDefined()
値が undefined ではないことを確認します。
expect(result).toBeDefined();
toBeTruthy()
値が真であることを確認します。
expect(result).toBeTruthy();
toBeFalsy()
値が偽であることを確認します。
expect(result).toBeFalsy();
toBeGreaterThan(expected)
値が期待される値より大きいことを確認します。
expect(result).toBeGreaterThan(5);
toBeLessThan(expected)
値が期待される値より小さいことを確認します。
expect(result).toBeLessThan(10);
toBeCloseTo(expected, numDigits)
浮動小数点数の値が期待される値に近いことを確認します。
expect(value).toBeCloseTo(0.3, 0); // 第二引数は小数点以下の桁数
toContain(expected)
配列や文字列が指定された要素を含むことを確認します。
expect(array).toContain(3);
expect(string).toContain('world');
toMatch(regexp)
正規表現と一致するかどうかを確認します。
expect(string).toMatch(/hello/);
toThrow(error?)
関数がエラーをスローすることを確認します。オプションでエラーメッセージを指定することもできます。
expect(() => func()).toThrow();
expect(() => func()).toThrow('error message');
これらのExpect関数を使用して、さまざまな値の比較や期待結果の検証を行うことができます。Jestの柔軟なアサーション機能を活用して、テストケースをより詳細に検証し、信頼性の高いコードを開発してください。
テストの合格と不合格の判断方法
Jestは、テスト結果を自動的に判断し、合格(パス)または不合格(失敗)として表示します。合格と不合格の判断は、Expect関数内で指定されたアサーションが正しく機能するかどうかに基づいています。
テストが期待通りに機能し、すべてのアサーションが真の場合、テストは合格します。一方、少なくとも1つのアサーションが偽の場合、テストは不合格となります。Jestは、合格したテストケースは緑色で、不合格なテストケースは赤色で表示します。
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
まとめ
Jest の expect 関数を活用することで、テスト中に値の比較と期待結果の検証を容易に行うことができます。テスト結果は自動的に判断され、合格または不合格として表示されます。
コメント