#pink #ink #phat-contract

drink-pink-runtime

Phat 合约的运行时实现

9 个稳定版本

1.2.16-dev.12024年2月21日
1.2.16-dev.02024年2月20日
1.2.15 2024年1月30日
1.2.14 2023年12月27日
1.2.7 2023年11月16日

#2659 in 魔法豆

Download history 3/week @ 2024-03-07 10/week @ 2024-03-14 60/week @ 2024-03-28 58/week @ 2024-04-04

372 每月下载量
2 crates 中使用

Apache-2.0

1MB
1.5K SLoC

drink-pink-runtime

概述

drink-pink-runtime 是 Pink 合约环境下的 drink 框架的运行时实现。它扩展了 Drink 功能,提供了一种更方便的方法来编写 Pink 合约的强类型测试。此 crate 通过在 Pink 合约环境中模拟合约部署、事务执行和查询,简化了测试。

安装

要将 drink-pink-runtime 包含到您的项目中,请将其添加到您的 Cargo.toml

[dependencies]
pink-extension = "0.5"
drink = "0.8.0"
drink-pink-runtime = "1.2"

使用

以下是一个演示 drink-pink-runtime 基本使用的示例。这包括设置测试环境、部署合约包和模拟事务和查询。

#[cfg(test)]
mod tests {
    use drink_pink_runtime::{PinkRuntime, SessionExt, DeployBundle, Callable};
    use drink::session::Session;
    use super::YourContractRef;

    // This would compile all contracts dependended by your contract
    #[drink::contract_bundle_provider]
    enum BundleProvider {}

    #[test]
    fn example_test() -> Result<(), Box<dyn std::error::Error>> {
        let mut session = Session::<PinkRuntime>::new()?;

        // Deploy a contract bundle
        let contract_ref = YourContractRef::new().deploy_bundle(&BundleProvider::local()?, &mut session)?;

        // Set the deployed contract as a driver
        session.set_driver("YourDriverName", &contract_ref)?;

        // Simulate a transaction
        contract_ref.call_mut().your_transaction_method().submit_tx(&mut session)?;

        // Simulate a query
        let query_result = contract_ref.call().your_query_method().query(&mut session)?;

        Ok(())
    }
}

依赖项

~87MB
~1.5M SLoC