テスト

Rspack は Rust と Node.js のコードを組み合わせて使用しているため、それぞれ異なるテスト戦略が用いられています。

Rust テスト

ヒント

Rust のテストケースは単体テストにのみ適しています。完全なビルドプロセスをテストするには、Node.js のテストケースを追加してください。

Rust テストの実行

Rust コードのテストケースは、`./x test rust` または `cargo test` を使用して実行できます。

Rust テストの記述

テストケースは Rust コード内に記述します。例:

fn add(a: u8, b: u8) -> u8 {
  a + b
}

#[test]
fn test_add() {
  assert_eq!(add(1, 2), 3);
}

詳細については、以下を参照してください:Rust: テストの書き方

Node.js テスト

Node.js テストには、3 つのテストスイートがあります。

  • Webpack テスト: Rspack を使用して Webpack のテストケースを実行します。
  • Webpack プラグインテスト: Rspack を使用して、ネイティブでサポートされているプラグインのテストケースを実行します。
  • Rspack テスト: Rspack 自体のテストケースを実行します。

Webpack テスト

Rspack は Webpack の互換性を確認するために、Webpack のテストスイート全体を `tests/webpack-test` フォルダにコピーしました。新しいテストケースを追加する必要がある場合は、まずそのケースがこのフォルダに既に存在するかどうかを確認することをお勧めします。`test.filter.js` ファイルを削除するか、その戻り値を `true` に変更することで、テストケースを有効にできます。

Webpack テストは、ルートフォルダで `./x test webpack` または `pnpm run test:webpack` を実行して実行できます。

注意

問題が発生した場合は、Webpack テストケースの元のコードを変更しないでください。コピーして、Rspack テスト に従って、`packages/rspack-test-tools/tests` に新しいテストケースを作成してください。

詳細については、以下を参照してください:Webpack テスト

Rspack テスト

Rspack のテストケースは、`packages/rspack-test-tools/tests` フォルダに格納されており、独自のテストケースと、Webpack および Webpack プラグイン用に修正が必要なケースが含まれています。

Rspack テストは、ルートフォルダで `./x test unit` または `pnpm run test:unit` を実行して実行できます。

`packages/rspack-test-tools` フォルダに移動して `npm run test` を実行すると、テストケースを実行し、いくつかの引数を追加できます。

  • テストスナップショットの更新が必要な場合: `-u` を追加します (例: `npm run test -- -u`)
  • テストケースをフィルタリングする必要がある場合: `-t` を追加します (例: `npm run test -- -t config/asset` は、`packages/rspack-test-tools/configCases/asset` フォルダからのテストケースのみを実行します ( `config` は自動的に `configCases` にマップされ、他のフォルダも同様に機能します)。パターンマッチングは正規表現をサポートしています。詳細は jest を参照してください。

詳細については、以下を参照してください:Rspack テスト

Webpack プラグインテスト

実装の違いとパフォーマンスの考慮事項から、Rspack は内部的にいくつかの Webpack プラグインをサポートします。同様に、これらのプラグインのテストスイートは、プラグインの互換性をテストするために `tests/plugin-test` フォルダにコピーされています。

Webpack プラグインテストは、ルートフォルダで `./x test plugin` または `pnpm run test:plugin` を実行して実行できます。

注意

ほとんどの場合、対応するプラグインの機能を変更した場合でも、Rspack テスト に従って新しいテストケースを追加するだけで済みます。

新しい Webpack プラグインをネイティブに実装し、そのテストケースをコピーする必要がある場合のみ、このスイートに追加できます。

詳細については、以下を参照してください:Webpack プラグインテスト