测试

由于 Rspack 使用了 Rust 和 Node.js 代码的混合,因此对每种代码都采用了不同的测试策略。

Rust 测试

提示

Rust 测试用例仅适用于单元测试。要测试完整的构建过程,请添加 Node.js 测试用例。

运行 Rust 测试

您可以使用 ./x test rustcargo test 运行 Rust 代码的测试用例。

编写 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 测试提供三个测试套件

  • Webpack 测试: 使用 Rspack 运行 Webpack 测试用例
  • Webpack 插件测试: 使用 Rspack 运行原生支持插件的测试用例
  • Rspack 测试: 运行 Rspack 自身的测试用例

Webpack 测试

Rspack 将整个 Webpack 测试套件复制到 tests/webpack-test 文件夹中,以检查与 webpack 的兼容性。如果您需要添加新的测试用例,建议首先检查该文件夹中是否存在该用例。您可以通过删除 test.filter.js 文件或将其返回值修改为 true 来启用测试用例。

您可以通过在根文件夹中运行 ./x test webpackpnpm run test:webpack 来运行 Webpack 测试。

注意

如果您遇到任何问题,请不要修改 Webpack 测试用例的原始代码。您可以将其复制,然后按照 Rspack 测试 的方法在 packages/rspack-test-tools/tests 中创建新的测试用例。

更多详细信息,请参考:Webpack 测试.

Rspack 测试

Rspack 的测试用例存储在 packages/rspack-test-tools/tests 文件夹中,包括独特的测试用例以及需要修改的 Webpack 和 Webpack 插件用例。

您可以通过在根文件夹中运行 ./x test unitpnpm run test:unit 来运行 Rspack 测试。

您也可以进入 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 文件夹中,以测试插件的兼容性。

您可以通过在根文件夹中运行 ./x test pluginpnpm run test:plugin 来运行 Webpack 插件测试。

注意

在大多数情况下,即使您修改了相应插件的功能,您也只需要按照 Rspack 测试 的方法添加新的测试用例。

只有当您原生实现了一个新的 Webpack 插件并需要复制其测试用例时,您才能将其添加到此套件中。

更多详细信息,请参考:Webpack 插件测试.