79次发布
0.3.43 | 2024年8月12日 |
---|---|
0.3.42 | 2024年3月4日 |
0.3.41 | 2024年2月6日 |
0.3.39 | 2023年11月27日 |
0.2.15 | 2018年7月26日 |
#242 in WebAssembly
508,606 个月下载
用于855 个包(835个直接使用)
475KB
6K SLoC
wasm-bindgen-test
阅读指南中的“使用 wasm-bindgen-test
进行测试”部分!
组件
测试框架由三个独立的组件组成,但通常您不必担心它们中的大多数。这里列出它们是为了文档目的!
wasm-bindgen-test-macro
此crate位于crates/test-macro
,是一个过程宏,它定义了#[wasm_bindgen_test]
宏。 不能使用正常的#[test]
宏,并且它将无法工作。 最终目的是让#[wasm_bindgen_test]
属性能够接受类似于“在浏览器中运行”或类似的最小Node版本等参数。
不过,目前该宏很简单,并从下一个crate wasm-bindgen-test
导出。
wasm-bindgen-test
这是执行测试所需的运行时支持。这基本上与Rust仓库中的test
crate相同,有一天它可能会直接使用test
crate!但到目前为止,它是一个最小化的重实现,它提供了对
- 打印正在运行的测试用例的支持
- 收集每个测试用例的
console.log
和console.error
输出,以便稍后打印 - 渲染每个测试用例的失败输出
- 捕获JS异常,以便在测试失败后测试可以继续运行
- 驱动所有测试的执行
这是您在wasm测试中实际链接的crate,您通过它导入#[wasm_bindgen_test]
宏。否则,此crate提供了一个类似于println!
的实用宏console_log!
,它仅使用console.log
。
此crate可能在未来增加更多功能,但到目前为止,它相当基础!
wasm-bindgen-test-runner
这就是秘密配方发挥作用的地方。我们配置Cargo以执行此二进制文件而不是直接执行*.wasm
文件(Cargo否则会尝试执行)。这意味着每当执行测试时,它都会使用wasm文件作为参数执行此二进制文件,从而允许它完全控制测试过程!
测试运行器目前相当简单,执行几个步骤
- 首先,它运行相当于
wasm-bindgen
的命令。这将生成wasm-bindgen输出在临时目录中。 - 接下来,它生成一个小的shim JS文件,该文件导入这些wasm-bindgen生成的文件并执行测试工具。
- 最后,它使用
node
执行生成的JS文件,执行所有测试。
本质上发生的事情是,此测试运行器自动执行wasm-bindgen
,然后使用Node实际执行wasm文件,这意味着您的wasm代码目前运行在Node环境中。
未来工作
未来支持的一些很酷的功能
- 与
wasm-bindgen
相同的wasm-bindgen-test-runner
参数,例如,使用--debug
影响生成的输出。 - 在每个wasm实例中运行每个测试,以避免在panic时污染环境
依赖关系
~1.1–3.5MB
~51K SLoC