Truffle ofrece dos formas de probar contratos inteligentes: ya sea utilizando archivos de prueba escritos como contratos de Solidity o Javascript/Mocha.
https://truffleframework.com/docs/truffle/testing/writing-tests-in-solidity
https://truffleframework.com/docs/truffle/testing/write-tests-in-javascript
¿Hay recomendaciones sobre cuándo elegir entre los dos? ¿Te quedas con uno o usas ambos pero para diferentes propósitos?
Uso exclusivamente javascript (por ahora), porque:
No digo que mi enfoque sea el mejor y que todo el mundo debería usarlo, y las pruebas en solidez son inútiles. Prefiero decir que soy perezoso , no tuve suficiente tiempo para aprender y sentirme cómodo usando solidity para probar y las pruebas de nodejs son lo suficientemente buenas para mí por ahora.
Si tiene tiempo, le recomiendo que se sienta cómodo usando ambos métodos .
Estoy de acuerdo con Tudor, también uso javascript. Me gustaría agregar:
Probar sus contratos inteligentes con JavaScript
Y el resultado:
Contrato: FundRaise ✓ tiene un dueño (38ms) ✓ es capaz de aceptar fondos (234ms)
2 pasando (473ms)
Hermosamente. Este es un proceso que se lleva a cabo sistemáticamente para cubrir los contratos inteligentes con una prueba escrita en JavaScript. Simplemente siga haciéndolo hasta que se cumplan todas las condiciones de un contrato inteligente.
Aquí hay un excelente artículo de Medium que cubre todo lo relacionado con las pruebas en Ethereum.
Pruebas de solidez
Escribir pruebas en Solidity nos da la capacidad de ejecutar pruebas de capas de Blockchain. Permiten que las pruebas llamen a contratos y funciones como si estuvieran en Blockchain. Para probar el comportamiento interno de los contratos inteligentes podemos:
- Escriba pruebas unitarias para verificar los valores devueltos de la función y los valores de las variables de estado.
- Escriba pruebas de integración que prueben las interacciones entre contratos. Estos aseguran que los mecanismos como la herencia y la inyección de dependencia funcionen como se espera.
Pruebas de JavaScript
También debemos asegurarnos de que los contratos inteligentes muestren el comportamiento externo correcto. Para probar contratos inteligentes desde fuera de Blockchain, usamos Web3js, tal como lo haría nuestra DApp. Necesitamos tener confianza en que nuestra interfaz DApp funcionará correctamente al llamar a los contratos inteligentes. Estos caen bajo las pruebas de integración.
Fuente: https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d
bastién
Tudor Constantino
web3js
hasta ahora hizo un muy buen trabajo para mí.