Detectar Cambios Inesperados con Imágenes de Prueba
Se escriben pruebas para asegurar que los contratos se comporten hoy como se espera, y también en el futuro. Con el tiempo, un contrato puede cambiar y en todo desarrollo de software siempre existe la posibilidad de que los cambios causen efectos secundarios inesperados. Las pruebas son una de las maneras en que identificamos cambios inesperados.
Sin embargo, las pruebas son limitadas, ya que solo muestran cambios en los valores que las pruebas afirman.
Imágenes de Prueba
El SDK de Soroban Rust genera imágenes de prueba en cada prueba que involucra un Env
. Las imágenes de prueba están habilitadas por defecto. Al final de la prueba, el Env
escribe un archivo JSON en el directorio test_snapshots
con una imagen completa de todos los eventos publicados, registrados y el estado final del almacenamiento del ledger.
La mayoría de las pruebas tienen un solo Env
y resultarán en una sola imagen de prueba. Las pruebas que tienen múltiples Env
s escribirán múltiples imágenes de prueba, una para cada Env
. Los archivos de imagen de prueba son nombrados con un número incremental al final para separar las imágenes de prueba de cada Env
.
Cómo Usar Imágenes de Prueba
-
Escribe pruebas utilizando el
Env
por defecto. Por ejemplo:#![cfg(test)]
use soroban_sdk::Env;
use crate::{Contract, ContractClient};
#[test]
fn test_abc() {
let env = Env::default();
let contract_id = env.register_contract(None, Contract);
let client = ContractClient::new(&env, &contract_id);
assert_eq!(client.increment(), 1);
// At the end of the test the Env will automatically write a test snapshot
// to the following directory: test_snapshots/test_abc.1.json
} -
Ejecuta las pruebas y verifica que las imágenes de prueba se hayan escrito en
test_snapshots/
. -
Haz un commit de las imágenes de prueba en el control de versiones.
-
En futuras actualizaciones, busca cambios en las imágenes de prueba en pruebas que sean inesperados. Por ejemplo, al cambiar una parte de un contrato, si las imágenes de prueba de otras partes del contrato o pruebas de extremo a extremo no relacionadas cambian, eso podría señalar que han ocurrido efectos secundarios.
-
Si es necesario, compara las imágenes de prueba para buscar pistas de por qué puede haber ocurrido el cambio inesperado.
Nota que las imágenes de prueba son extremadamente verbosas y entender cada una en aislamiento puede no ser realista. Las imágenes de prueba son más útiles cuando aparecen cambios y pueden ser comparadas, como la publicación de un nuevo evento, o un cambio en el almacenamiento.
Para probar esto, revisa el contrato de Comenzar o cualquiera de los ejemplos, ejecuta las pruebas y busca las imágenes de prueba en el disco.
Guías en esta categoría:
📄️ Pruebas Unitarias
Las pruebas unitarias son pruebas pequeñas que prueban contratos inteligentes.
📄️ Detectar Cambios Inesperados con Imágenes de Prueba
Usa imágenes de prueba para detectar cambios inesperados en el comportamiento del contrato
📄️ Probar las invocaciones de contrato autorizadas
Usa el contrato de ejemplo de autenticación para asegurar que la autenticación se lleva a cabo como se espera