#fluence #sdk #marine #wasm #generate #api-bindings #wasm-module

marine-build-rs-generator

构建脚本中生成 marine_test_env 的工具

22 个版本 (12 个重大更新)

0.16.1 2024年2月29日
0.15.0 2024年2月21日
0.12.1 2023年12月20日
0.11.1 2023年11月21日
0.4.0 2021年10月18日

#2542 in 魔法豆

Download history 95/week @ 2024-03-24 241/week @ 2024-03-31 126/week @ 2024-04-07 78/week @ 2024-04-14 100/week @ 2024-04-21 30/week @ 2024-04-28 82/week @ 2024-05-05 274/week @ 2024-05-12 239/week @ 2024-05-19 162/week @ 2024-05-26 186/week @ 2024-06-02 123/week @ 2024-06-09 57/week @ 2024-06-16 32/week @ 2024-06-23 54/week @ 2024-06-30 60/week @ 2024-07-07

每月211次下载
2 个crate中使用(通过marine-rs-sdk-test

Apache-2.0

5KB

Marine 测试 Rust SDK

crates.io version

此SDK旨在帮助针对Marine的开发者测试他们的Wasm模块和服务,因为cargo test无法运行此类模块,但这是必要的。为了避免这种限制,SDK引入了#[marine_test]宏,它执行大部分繁重的工作,使开发者能够像预期的那样使用cargo test。也就是说,#[marine_test]宏根据Wasm模块和相关的配置文件生成必要的代码来调用Marine,每个测试函数一个实例,以便实际的测试函数是针对Wasm模块而不是本地代码运行的。

使用方法

SDK的核心组件是#[marine_test]宏,它可以封装测试函数,提供类似于“纯Rust”的体验。封装后的函数应接收一个代表模块接口的特殊对象,以下是一个示例。

use marine_rs_sdk::marine;

pub fn main() {}

#[marine]
pub fn greeting(name: String) -> String {
    format!("Hi, {}", name)
}

#[cfg(test)]
mod tests {
    use marine_rs_sdk_test::marine_test;

    #[marine_test(config_path = "../Config.toml", modules_dir = "../artifacts")]
    fn test(greeting: marine_test_env::greeting::ModuleInterface) {
        let actual = greeting.greeting("John".to_string());
        assert_eq!(actual, "Hi, John");
    }
}

此示例展示了一个简单的模块,该模块有一个导出函数greeting和一个测试。测试函数使用#[marine_test]宏进行封装,该宏指定了配置文件(Config.toml)和包含我们使用marine CLI构建命令编译项目后获得的Wasm模块的目录。此宏在底层生成必要的粘合代码,以实例化Marine实例并调用其中加载的greeting模块。

在准备好我们的Wasm模块和测试后,我们可以使用cargo test继续。

在没有Marine测试套件的设置中,greeting函数将被编译为本地版本,然后进行本地测试。相比之下,套件将将其编译为Wasm,加载到Marine中,然后才作为Wasm模块调用。

更多详细信息可以在Marine书籍的本章中找到。

文档

仓库结构

支持

如果您发现错误,请提交问题。您还可以通过DiscordTelegram联系我们。我们将尽力尽快解决问题。

贡献

任何感兴趣的人都可以为项目做出贡献。请确保您已阅读并遵循一些基本的规则

许可证

所有软件代码均为(c) Fluence Labs, Inc.所有,受Apache-2.0许可证的版权保护。

依赖项

~37–52MB
~884K SLoC