10.2 Escribir pruebas unitarias





Curso de Solidity: Escribir Pruebas Unitarias (10.2)

Punto del curso de Solidity: 10.2 Escribir Pruebas Unitarias

En el desarrollo de contratos inteligentes, es crucial asegurarse de que el código funcione como se espera. Escribir pruebas unitarias efectivas nos permite verificar la funcionalidad de nuestros contratos y detectar errores antes de desplegarlos en la blockchain. En este punto del curso, vamos a profundizar en cómo escribir estas pruebas unitarias utilizando Truffle y Mocha/Chai.

Configuración del Entorno

Vamos a utilizar las herramientas Truffle y Mocha/Chai para escribir nuestras pruebas unitarias. Si aún no tienes estas herramientas, asegúrate de instalarlas:

  • Truffle: Truffle es un entorno de desarrollo para Ethereum. Puedes instalarlo utilizando npm:
npm install -g truffle
    
  • Mocha: Mocha es un framework de test en JavaScript. Se instala con npm como:
npm install --save-dev mocha
    
  • Chai: Chai es una biblioteca de aserciones para Node.js que se usa comúnmente con Mocha. Instálalo con:
npm install --save-dev chai
    

Ejemplo de Contrato Inteligente

Vamos a comenzar con un contrato simple en Solidity para ilustrar cómo escribir pruebas unitarias. Aquí tienes un contrato básico llamado SimpleStorage:

pragma solidity ^0.8.0

contract SimpleStorage {
    uint256 private storedData

    function set(uint256 x) public {
        storedData = x
    }

    function get() public view returns (uint256) {
        return storedData
    }
}
    

Creación de Pruebas Unitarias

A continuación, escribiremos pruebas unitarias para el contrato SimpleStorage usando Mocha y Chai. Las pruebas se ubicaran en el directorio test de Truffle.

1. Inicialización de Mocha y Chai

Primero, requerimos las librerías necesarias:

const SimpleStorage = artifacts.require(SimpleStorage)
const assert = require(chai).assert
    

2. Describir el Contrato y sus Pruebas

Utilizaremos la función describe de Mocha para agrupar lógicamente nuestras pruebas:

contract(SimpleStorage, (accounts) => {
    it(debería iniciar con una dirección que sea válida, async () => {
        const instance = await SimpleStorage.deployed()
        assert.isTrue(instance.address !== undefined, La dirección no debería ser indefinida)
    })

    it(debería almacenar un valor, async () => {
        const instance = await SimpleStorage.deployed()
        await instance.set(89)
        const storedData = await instance.get()
        assert.equal(storedData, 89, El valor almacenado debería ser 89)
    })

    it(debería actualizar el valor almacenado, async () => {
        const instance = await SimpleStorage.deployed()
        await instance.set(42)
        const storedData = await instance.get()
        assert.equal(storedData, 42, El valor almacenado debería ser 42)
    })
})
    

3. Explicación del Código de Pruebas

  • describe: Agrupamos las pruebas relacionadas con el contrato SimpleStorage.
  • it: Define una prueba específica. En este ejemplo, verificamos que la dirección inicial no sea indefinida.
  • assert: Chai nos permite hacer afirmaciones en nuestras pruebas. Aquí, estamos usando varios métodos, como isTrue y equal, para verificar las condiciones.

Ejecutar las Pruebas

Desde la terminal, en el directorio del proyecto, ejecuta el siguiente comando para correr las pruebas:

truffle test
    

La salida de la terminal debería indicar si las pruebas han pasado o fallado, proporcionando detalles específicos de cualquier error encontrado.

Conclusión

Las pruebas unitarias son fundamentales para el desarrollo seguro y confiable de contratos inteligentes en Solidity. Usando Truffle, Mocha y Chai, podemos crear un entorno robusto para verificar la funcionalidad de nuestros contratos antes de desplegarlos en la red. Recomendamos escribir pruebas detalladas para cada función y posible caso de uso en tus contratos inteligentes.


AnteriorSiguiente

[mwai_chat]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *