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

Download history 114513/week @ 2024-05-03 121605/week @ 2024-05-10 132133/week @ 2024-05-17 137478/week @ 2024-05-24 141594/week @ 2024-05-31 120914/week @ 2024-06-07 126399/week @ 2024-06-14 134411/week @ 2024-06-21 116096/week @ 2024-06-28 113040/week @ 2024-07-05 138567/week @ 2024-07-12 135064/week @ 2024-07-19 130482/week @ 2024-07-26 121210/week @ 2024-08-02 132558/week @ 2024-08-09 98123/week @ 2024-08-16

508,606 个月下载
用于855 个包(835个直接使用)

MIT/Apache 和可能 GPL-3.0

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.logconsole.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