Teste básico de SALDO
Para testar códigos em Rust, podemos escrever uma macro diretamente no arquivo assim:
// balances.rs
#[test]
E então podemos construir os nossos testes para as funções de balances:
// balances.rs
#[test]
fn init_balances() {
let mut balances = Pallet::new();
assert_eq!(balances.get_balance("yan".to_string()), 0);
balances.set_balance("yan".to_string(), 10);
assert_eq!(balances.get_balance("yan".to_string()), 10);
assert_eq!(balances.get_balance("bubu".to_string()), 0);
}
Esta função de teste irá criar um novo
Pallet
, verificar se o saldo deyan
é 0, adicionar 10 ao saldo deyan
e então verificar se o saldo deyan
é 10 e o saldo debubu
é 0.
Para rodar o teste, podemos utilizar o comando cargo test
:
➜ learn-rust-web3 git:(main) ✗ cargo test
Compiling learn-rust-web3 v0.1.0 (/home/yan/Documentos/Repository/learn-rust-web3)
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.34s
Running unittests src/main.rs (target/debug/deps/learn_rust_web3-f468dfd07d9e4ce6)
running 1 test
test balances::init_balances ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Outro teste que podemos fazer é verificar se o saldo de uma conta foi atualizado corretamente:
#[test]
fn update_balance() {
let mut balances = Pallet::new();
balances.set_balance("yan".to_string(), 10);
balances.set_balance("yan".to_string(), 20);
assert_eq!(balances.get_balance("yan".to_string()), 20);
}
Com o resultado esperado:
➜ learn-rust-web3 git:(main) ✗ cargo test
Compiling learn-rust-web3 v0.1.0 (/home/yan/Documentos/Repository/learn-rust-web3)
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s
Running unittests src/main.rs (target/debug/deps/learn_rust_web3-f468dfd07d9e4ce6)
running 2 tests
test balances::init_balances ... ok
test balances::update_balance ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s