web-dev-qa-db-ja.com

jestスナップショットテスト:jestテスト結果でスナップショットファイルの一部を無視する方法

問題:.snapファイルのテスト結果の一部を無視する

ここでの質問:私のテストにはランダムな値を持つコンポーネントがいくつかあり、それらのテストはあまり気にしません。 X.snapファイルの一部を無視する方法はありますか?そのため、今後テストを実行しても、テストの失敗結果は表示されません。

17
sawa we

実際には、可動部分をモックする必要があります。

jest docs に記載されているとおり:

テストは確定的でなければなりません。つまり、変更されていないコンポーネントで同じテストを複数回実行すると、毎回同じ結果が生成されます。生成されたスナップショットにプラットフォーム固有のデータやその他の非決定的なデータが含まれないようにする責任があります。

時間に関連するものであれば、使用できます

Date.now = jest.fn(() => 1482363367071);
12
Abdellah Alaoui

現在、これらの場合には property matcher も使用できます。

たとえば、これらのオブジェクトでスナップショットを使用できるようにするには:

const obj = {
  id: dynamic(),
  foo: 'bar',
  other: 'value',
  val: 1,
};

以下を使用できます。

expect(obj).toMatchSnapshot({
  id: expect.any(String),
});

Jestは、idが文字列であることを確認し、スナップショット内の他のフィールドを通常どおり処理します。

8
Julien TASSIN