小编sam*_*rts的帖子

是否可以从 javascript 上下文测试 wasm-pack 生成的 WebAssembly?

我有一个像这样的 Rust + wasm 项目:

wasm-pack-example/
  pkg/
    .gitignore
    package.json
    wasm_pack_example.d.ts
    wasm_pack_example.js
    wasm_pack_example_bg.d.ts
    wasm_pack_example_bg.js
    wasm_pack_example_bg.wasm
  src/
    lib.rs
  Cargo.toml
Run Code Online (Sandbox Code Playgroud)

pkg当我运行时,会构建wasm-pack build.

发出的 js 文件不是公共 rust 函数的简单传递 - wasm-pack 向它们添加了一些逻辑。它看起来很像公共 Rust 函数的内存管理包装器。

在我的项目中,我现在真正想做的是针对发出的 wasm 的 js 接口编写自动化测试。这就是我的应用程序所做的,这就是我需要测试的。我很高兴使用任何测试框架(我已经用玩笑做了很多这样的实验)。

我已经尝试了许多指南和工具来做到这一点,包括https://github.com/DrSensor/rs-jest,它很有前途,但缺乏测试 wasm-pack 生成的特定 js 接口的能力。另外,它似乎缺少我的特定库所需的东西,也许是我使用 wasm_bindgen 的特定方式。当根据 rs-jest 实例化 WebAssembly 时,我会看到TypeError: WebAssembly.instantiate(): Imports argument must be present and must be an object,如果我将一个空对象传递给实例化,我会看到TypeError: WebAssembly.instantiate(): Import #0 module="__wbindgen_placeholder__" error: module is not an object or function

我还尝试了一段时间来模拟浏览器使用 JsDom 获取和实例化 …

javascript automated-tests rust wasm-pack

9
推荐指数
1
解决办法
887
查看次数

标签 统计

automated-tests ×1

javascript ×1

rust ×1

wasm-pack ×1