Skip to content
Latchkey

Jest vs Mocha: CIに適したJSのtest runnerはどちら?

Jestはオールインワン。Mochaはassertionとmockingのライブラリで組み立てる最小限のコア。

Jestはrunner、assertion、mocking、snapshotを1つのパッケージにまとめています。Mochaは柔軟なtest runnerで、Chai(assertion)やSinon(mock)などのライブラリと組み合わせて使います。

JestMocha
全部入りあり(assert、mock、snapshot)なし(ライブラリを組み合わせる)
Mocking組み込みSinonなど
Snapshot組み込みアドオン
並列実行組み込み(worker)手動 / アドオン
柔軟性opinionated非常に柔軟

CIでは

Jestはほとんどセットアップを必要とせず、worker間でテストを標準で並列化するため、テストのステップをシンプルかつ高速に保ちます。Mochaはより無駄がなく柔軟で - 各部品を選びたいときに良い - ですが、並列実行、mocking、カバレッジは自分で組み立てます。大規模なJestスイートはCIのworkerをOOMさせることがあります。runnerに関わらずworkerを制限しメモリを見積もりましょう。

パイプラインでの選び方

最小限の配線でよく統合された単一のツールが欲しい: Jest。完全に制御できる最小限のコアが欲しい: Mochaと選んだライブラリ。どちらも成熟しており、CIで十分にサポートされています。

結論

組み込みの並列実行を備えた全部入りのテストが欲しい: Jest。柔軟で組み立て可能なスタックが欲しい: Mocha。いずれにせよ、遅いE2Eや統合スイートではflakyなテストのretryを計画しましょう。

関連ガイド