2

我正在 elrond 区块链中进行一些生锈测试。

当我在 execute_query 之外打印令牌标识符时,我的令牌打印得很好。然而,当我尝试在 execute_query 中打印它时会引发错误。

#[test]
fn test_foo() {
    let mut setup = utils::setup(equip_penguin::contract_obj);

    let token = TokenIdentifier::<DebugApi>::from_esdt_bytes(b"ITEM-a1a1a1");
    // works
    println!("{:x?}", token);

    let b_wrapper = &mut setup.blockchain_wrapper;

    let _ = b_wrapper.execute_query(&setup.cf_wrapper, |sc| {
        // throw errors
        println!("{:x?}", token);
    });
}

错误是

thread 'build_url_with_one_item' panicked at 'called `Option::unwrap()` on a `None` value', /home/username/.cargo/registry/src/github.com-1ecc6299db9ec823/elrond-wasm-debug-0.27.4/src/tx_mock/tx_managed_types.rs:38:31

此文档的上述代码段中使用的 utils::setup https://docs.elrond.com/developers/developer-reference/rust-testing-framework/

这个错误是怎么发生的?

4

1 回答 1

2

好的,托管类型必须在内部声明execute_query

上面的代码有效:

#[test]
fn test_foo() {
    let mut setup = utils::setup(equip_penguin::contract_obj);

    let b_wrapper = &mut setup.blockchain_wrapper;

    let _ = b_wrapper.execute_query(&setup.cf_wrapper, |sc| {
        let token = TokenIdentifier::<DebugApi>::from_esdt_bytes(b"ITEM-a1a1a1");
        println!("{:x?}", token);
    });
}
于 2022-02-15T15:51:19.450 回答