Zettelkasten
Section 1
Lesson 4

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 de yan é 0, adicionar 10 ao saldo de yan e então verificar se o saldo de yan é 10 e o saldo de bubu é 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