Jest 入門 ~ アサーションの活用 ~

未分類

はじめに

この記事では、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);

浮動小数点数に .toBe を使用しないでください。 例えば、JavaScriptでは数値の丸めによって 0.2 + 0.1と 0.3は厳密には等価ではありません。 浮動小数点がある場合は、代わりに .toBeCloseTo を使用してください。

toEqual(expected)

オブジェクトや配列などの深い比較を行います。

expect(obj).toEqual({ prop: 'value' });

 .toEqual と .toBe は異なる振る舞いをするので注意しましょう。

以下の例では、obj1 と obj2 は同じに見えますが、.toEqual と .toBe で結果が異なります。

const obj1 = { key1: 'value1' };
const obj2 = { key1: 'value1' };

test('toEqual test', () => {
  expect(obj1).toEqual(obj2);  // このテストは成功します。
});

test('toEqual test', () => {
  expect(obj1).toBe(obj2);  // このテストは失敗します。
});
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 関数を活用することで、テスト中に値の比較と期待結果の検証を容易に行うことができます。テスト結果は自動的に判断され、合格または不合格として表示されます。

コメント

タイトルとURLをコピーしました