2
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();
        ...
4

1 回答 1

3

您可以使用set_callerfrom ink_env设置调用者:

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

编辑:目前,您需要实验性单元测试引擎。在您的测试模块上方添加以下内容:

#[cfg(feature = "ink-experimental-engine")]

并在您的 toml 文件中添加依赖项:

ink-experimental-engine = ["ink_env/ink-experimental-engine"]

有关更多详细信息,请参阅墨水存储库中的示例。

于 2021-11-03T18:20:26.197 回答