#provenance #smart-contracts #blockchain #unit-testing #finance #defi

provwasm-mocks

Rust 模拟器,用于对与 Provenance 区块链中自定义模块交互的 CosmWasm 智能合约进行单元测试

22 个版本 (9 个稳定版)

2.3.0 2024年7月19日
2.2.0 2024年3月28日
2.1.0 2023年12月13日
2.1.0-rc12023年10月20日
0.14.0-beta12021年3月29日

#2 in #defi

Download history 7/week @ 2024-05-19 7/week @ 2024-05-26 3/week @ 2024-06-02 13/week @ 2024-07-07 127/week @ 2024-07-14 19/week @ 2024-07-21 37/week @ 2024-07-28 3/week @ 2024-08-04

每月139次 下载
用于 provwasm-tutorial

Apache-2.0

2MB
47K SLoC

provwasm-mocks

此软件包提供模拟器,用于对与 Provenance 区块链中自定义模块交互的 CosmWasm 智能合约进行单元测试。

许可证

此软件包是 provwasm 仓库的一部分,受 Apache License 2.0 许可证许可(请参阅 LICENSE)。

示例用法

// Example unit test:
// Uses provwasm mocks to test a resolve query against the provenance name module.

// ref: contracts/name/src/msg.rs

#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
    #[returns(provwasm_std::Name)]
    Resolve { name: String },
    #[returns(provwasm_std::Names)]
    Lookup { address: String },
}

// ref: contracts/name/src/contract.rs

use cosmwasm_std::testing::mock_env;
use cosmwasm_std::from_binary;
use provwasm_mocks::mock_dependencies;
use provwasm_std::Name;

#[test]
fn query_resolve() {
    // Create provenance mock deps with a single bound name.
    let mut deps = mock_dependencies(&[]);
    deps.querier
        .with_names(&[("a.pb", "tp1y0txdp3sqmxjvfdaa8hfvwcljl8ugcfv26uync", false)]);

    // Call the smart contract query function to resolve the address for our test name.
    let bin = query(
        deps.as_ref(),
        mock_env(),
        QueryMsg::Resolve {
            name: "a.pb".into(),
        },
    )
        .unwrap();

    // Ensure that we got the expected address.
    let rep: Name = from_binary(&bin).unwrap();
    assert_eq!(rep.address, "tp1y0txdp3sqmxjvfdaa8hfvwcljl8ugcfv26uync")
}

依赖项

~5.5–9MB
~176K SLoC