在 Rust 中,使用 WebAssembly (WASM) 進(jìn)行單元測試需要借助一些工具和庫。以下是一些建議的步驟:
首先,在您的 Cargo.toml
文件中添加以下依賴項(xiàng):
[package]
name = "your_project_name"
version = "0.1.0"
authors = ["Your Name <your.email@example.com>"]
edition = "2018"
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = "0.2"
wasm-pack = "0.3"
test = "1.0"
這里我們添加了 wasm-bindgen
和 wasm-pack
用于與 WebAssembly 進(jìn)行交互,以及 test
庫用于編寫單元測試。
在您的 Rust 項(xiàng)目中,編寫一個(gè)簡單的函數(shù),例如 add
,并將其導(dǎo)出為 WebAssembly 函數(shù):
// src/lib.rs
#[wasm_bindgen]
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
在 src
目錄下創(chuàng)建一個(gè)名為 tests
的文件夾,并在其中創(chuàng)建一個(gè)名為 lib.rs
的文件。這將作為您的單元測試文件。
// tests/lib.rs
use super::*;
#[cfg(test)]
mod tests {
use wasm_bindgen_test::*;
#[wasm_bindgen_test]
fn test_add() {
assert_eq!(add(1, 2), 3);
assert_eq!(add(-1, 1), 0);
assert_eq!(add(0, 0), 0);
}
}
這里我們使用了 wasm_bindgen_test
庫來編寫 WebAssembly 的單元測試。請(qǐng)注意,我們?cè)?#[cfg(test)]
屬性下編寫了測試代碼,以便在構(gòu)建時(shí)僅運(yùn)行測試。
在項(xiàng)目根目錄下運(yùn)行以下命令,以構(gòu)建 WebAssembly 二進(jìn)制文件和測試:
wasm-pack build --target web
這將生成一個(gè)名為 pkg
的文件夾,其中包含 WebAssembly 二進(jìn)制文件和測試代碼。接下來,使用一個(gè)支持 WebAssembly 的 JavaScript 測試運(yùn)行器(如 wasm-test
)來運(yùn)行測試。例如,您可以使用 wasm-test
的 Node.js 版本:
npm install -g wasm-test
wasm-test tests/pkg/your_project_name.js
這將運(yùn)行您在 tests/lib.rs
中編寫的單元測試,并輸出測試結(jié)果。