模拟器(near_sdk_sim)可以用来测试两个不同合约之间的跨合约调用吗?
Can the simulator (near_sdk_sim) be used to test cross contract calls between two different contracts?
我已经使用模拟器对我的主合同进行了集成测试,我还有第二个合同,它会调用它。
我可以创建加载两个合约并运行跨合约调用的模拟测试吗?
我开始尝试这个,看来我可以部署两个合约,例如:
use near_sdk_sim::{call, init_simulator, deploy, UserAccount, ContractAccount};
use contract1::Contract1Contract;
use contract2::Contract2Contract; // <-- would need to do something different since contract2 is in a separate package
pub fn init() -> (UserAccount,
ContractAccount<Contract1Contract>,
ContractAccount<Contract1Contract>) {
let root = init_simulator(None);
let contract1 : ContractAccount<Contract1Contract> = deploy!(
contract: Contract1Contract,
contract_id: "contract1".to_string(),
bytes: &CONTRACT1_WASM_BYTES,
signer_account: root,
);
let contract2 : ContractAccount<Contract2Contract> = deploy!(
contract: Contract1Contract,
contract_id: "contract2".to_string(),
bytes: &CONTRACT2_WASM_BYTES,
signer_account: root,
);
(root, contract1, contract2)
}
我意识到,因为这两个合同在不同的包中,所以我不确定如何将合同 2 的结构导入到合同 1 的集成测试中。
有没有办法做到这一点 and/or 以及要查看的示例?
模拟器甚至支持这个吗? (即在同一个测试中部署两个合约)
是的,您可以在这里找到更多关于跨合约调用的信息:https://github.com/near-examples/cross-contract-calls
请注意,此回购协议中的某些依赖项此时可能有点过时,但概念肯定保持完好。
我已经使用模拟器对我的主合同进行了集成测试,我还有第二个合同,它会调用它。
我可以创建加载两个合约并运行跨合约调用的模拟测试吗?
我开始尝试这个,看来我可以部署两个合约,例如:
use near_sdk_sim::{call, init_simulator, deploy, UserAccount, ContractAccount};
use contract1::Contract1Contract;
use contract2::Contract2Contract; // <-- would need to do something different since contract2 is in a separate package
pub fn init() -> (UserAccount,
ContractAccount<Contract1Contract>,
ContractAccount<Contract1Contract>) {
let root = init_simulator(None);
let contract1 : ContractAccount<Contract1Contract> = deploy!(
contract: Contract1Contract,
contract_id: "contract1".to_string(),
bytes: &CONTRACT1_WASM_BYTES,
signer_account: root,
);
let contract2 : ContractAccount<Contract2Contract> = deploy!(
contract: Contract1Contract,
contract_id: "contract2".to_string(),
bytes: &CONTRACT2_WASM_BYTES,
signer_account: root,
);
(root, contract1, contract2)
}
我意识到,因为这两个合同在不同的包中,所以我不确定如何将合同 2 的结构导入到合同 1 的集成测试中。
有没有办法做到这一点 and/or 以及要查看的示例?
模拟器甚至支持这个吗? (即在同一个测试中部署两个合约)
是的,您可以在这里找到更多关于跨合约调用的信息:https://github.com/near-examples/cross-contract-calls
请注意,此回购协议中的某些依赖项此时可能有点过时,但概念肯定保持完好。