6 个版本
0.1.4 | 2024 年 3 月 12 日 |
---|---|
0.1.3 | 2024 年 3 月 1 日 |
0.1.2 | 2024 年 2 月 28 日 |
#6 in #phat-contract
每月下载 27 次
1.5MB
1.5K SLoC
pink-drink
概览
pink-drink
是 Pink 合约环境 drink 框架的运行时实现。它扩展了 Drink 的功能,为 Pink 合约提供了一种更方便的编写强类型测试的方法。此 crate 通过模拟合约部署、交易执行和 Pink 合约环境中的查询,简化了测试过程。
安装
要将 pink-drink
包含到您的项目中,请将其添加到您的 Cargo.toml
[dependencies]
pink = "0.1.0"
[dev-dependencies]
drink = "0.8.0"
pink-drink = "1.2"
用法
以下是一个演示 pink-drink
基本用法的示例。这包括设置测试环境、部署合约包以及模拟交易和查询。
#[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(())
}
}
依赖项
~89MB
~1.5M SLoC