# Jest
# セットアップ
デフォルトの設定では、同時に複数のテストを実行する。DB 操作を伴うテスト等では失敗の原因になるので、
--runInBand
(or-i
)オプションをつけて、1 つずつテストを実行すること。テストのセットアップファイルの指定は、
package.json
のsetupTestFrameworkScriptFile
で行う。
# babel 関係
yarn add babel-core babel-jest babel-preset-env regenerator-runtime
.babelrc
{
"presets": ["env"]
}
# コンポーネントのモック
// Auto Mock
// (インポートしたクラスのすべてのファンクションが自動的にモックされ
// undefinedを返すようになる)
jest.mock('../PageViewPostsGrid');
// コンポーネントがClassではなくFunctionの場合は、renderメソッドのMockが必要
beforeAll(() => {
PageViewPostsGrid.mockImplementation(() => ({
render: () => <div>mock</div>,
}));
});
# setImmediate 等
setImmediate, setTimeout, process.nextTick を使うときは、必ず done()を併用すること。さもないと、テストが落ちたり、expect の挙動もおかしくなった。