Пакет cw-multi-test позволяет проводить интеграционные тесты ()
Необходимо выполнить следующие шаги:
1) Инициировать тестовую установку пакета. Ниже мы приводим пример с использованием instantiate_contract()и дальнейшей работой с execute_contract() соответственно:
#[test]
fn test_example_contract() {
let mut app = mock_app(init_default_balances);
let example_contract_addr = setup_test(&mut app);
app.execute_contract(
Addr::unchecked("admin"),
example_contract_addr.clone(),
&ExampleExecuteMsg::ExampleCall {
underlying_asset: "usei".to_string(),
param_1: Decimal::new(Uint128::new(10_000))
},
&[Coin {
denom: "usei".to_string(),
amount: Uint128::new(10_000),
}],
)
.unwrap();
... // Do other logic
// Assert that correct amount is refunded to `bob`
let res: BalanceResponse = get_balance(&app, "bob".to_string(), "usei".to_string());
assert_eq!(res.amount.amount, Uint128::new(10_000_000));
assert_eq!(res.amount.denom, "usei");
... // Other checks include calling query_wasm_smart() on a given contract
// Query some object no longer exists
let example_obj: Result<ExampleObj, StdError> = app.wrap().query_wasm_smart(
example_contract_addr.clone(),
&QueryMsg::GetExampleObj { obj_id: 0 },
);
let error = example_obj.err().unwrap();
assert_eq!(
error.to_string(),
StdError::generic_err("Querier contract error: object not found")
.to_string()
);
}
Сквозное тестирование в блокчейне Sei
Для проведения сквозного тестирования вам необходимо вновь выполнить следующие шаги:
Для получения отладочной информации, такой как ошибочный ордер, вы можете использовать набор инструментов на стороне ПО по созданию контракта. Компилятор Rust может выводить ошибки во время компиляции. Также для любой структуры, для которой реализована функция отладки, можно использовать println! Наконец, вы можете добавить логи в deps.api.debug(err).
Ссылка на документацию Cosmwasm
1) запустите блокчейн на локальной машине или в сети разработчиков (devnet)
2) задеплойте свой контракт
Пример контракта, который может быть использован для локального тестирования можно посмотреть здесь