wasm-pack test

wasm-pack test 命令包装了 wasm-bindgen-test-runner CLI,允许您在不同的浏览器中运行 wasm 测试,而无需自己安装不同的 webdrivers。

wasm-pack test --help

路径

wasm-pack test 命令可以接受一个可选的路径参数。

此路径应指向包含 Cargo.toml 文件的目录。如果没有给出路径,则 test 命令将在当前目录中运行。

# Run tests for the current directory's crate
wasm-pack test

# Run tests for a specified crate
wasm-pack test crates/crate-in-my-workspace

配置文件

test 命令接受一个可选的配置文件参数:--release

如果没有提供,则将使用调试测试构建。

测试环境

通过传入任何测试环境标志的组合来选择运行测试的位置。

--headless 对于在无头浏览器中运行浏览器测试作为 CI 过程的一部分很有用。

wasm-pack test --node --firefox --chrome --safari --headless

额外选项

test 命令可以直接将额外的选项传递给 cargo test,即使它们在 wasm-pack 中不受支持。

要使用它们,只需将额外的参数添加到命令的末尾,就像您对 cargo test 一样。

cargo test -h 用于列出您可以传递的所有选项。

仅运行某些测试

在调试特定问题时,您可能会发现自己想运行测试的子集,而不是整个测试套件。

以下是一些如何运行测试子集的示例

# Example directory structure
$ tree crates/foo
├── Cargo.toml
├── README.md
├── src
│   ├── diff
│   │   ├── diff_test_case.rs
│   │   └── mod.rs
│   ├── lib.rs
└── tests
    ├── diff_patch.rs
    └── node.rs
# Run all tests in tests/diff_patch.rs in Firefox
wasm-pack test crates/foo --firefox --headless --test diff_patch

# Run all tests in tests/diff_patch.rs that contain the word "replace"
wasm-pack test crates/foo --firefox --headless --test diff_patch replace

# Run all tests inside of a `tests` module inside of src/lib/diff.rs
wasm-pack test crates/foo --firefox --headless --lib diff::tests

# Same as the above, but only if they contain the word replace
wasm-pack test crates/foo --firefox --headless --lib diff::tests::replace

请注意,您还可以按测试应该运行的位置来过滤测试。例如

# Run all tests which are intended to execute in Node.js
wasm-pack test --node

# Run all tests which are intended to be executed in a browser
wasm-pack test --firefox --headless