unit-testing - 如何在 ink 中设置来电者!契约(Contract)单元测试功能?

标签 unit-testing rust substrate rust-ink

fn do_check(&mut self) -> Result<()> {
    let caller = self.env().caller();
    ...
}

我正在为 do_check 函数编写一个测试函数。在这里,我想设置一个调用者,但不知道该怎么做。

#[cfg(test)]
mod tests {
    use super::*;
    use ink_lang as ink;

    #[ink::test]
    fn do_check_works() {
        let mut test = Test::new();
        // here I want to set a caller for calling do_check
        test.do_check();
        ...

最佳答案

您可以使用 ink_env 中的 set_caller 设置调用者:

let account = AccountId::from([0x1; 32]);
ink::env::test::set_caller::<ink::env::DefaultEnvironment>(account);

请参阅examples在 ink-examples 存储库中了解更多详细信息。

关于unit-testing - 如何在 ink 中设置来电者!契约(Contract)单元测试功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69829061/

相关文章:

javascript - 如何创建引用另一个类的 QUnit 测试?

python - 如何对验证日期时间是否为特定 ISO 格式的函数进行单元测试?

rust - 为什么在 &mut T 工作时,我不能使用 &mut Box<T> 一次多次借用可变变量?

macros - 有哪些类型的宏/语法扩展/编译器插件?

rust - 将范围作为结构域

spring - 在 Spring 中测试从 Controller 调用 rest Controller

javascript - 单元测试语法错误: Unexpected token {

blockchain - 您如何为您的运行时编写系统测试?

rust - 如何在基板模块中将 block 号转换为整数类型?

rust - Substrate 的 `<T>` 中的 `fn deposit_event<T>() = default` 有什么作用?