Con las pruebas de Javascript, es posible acceder a las cuentas que crea TestRPC usando:
contract('MetaCoin', function(accounts) {
// tests here can access accounts[n] to get the public keys
}
Pero, ¿cómo puedo usar esas direcciones de una prueba escrita en Solidity?
Me gustaría hacer una sugerencia.
En el TestMetaCoin.sol
ejemplo, puede ver que se utiliza la dirección del propietario del contrato. (Consulte tx.origin
) Por lo tanto, no veo ninguna razón por la que no pueda codificar otras direcciones de cuenta en un archivo de biblioteca de Solidity y luego importar la biblioteca a su prueba. Es posible que luego pueda usar $ testrpc --account="<privatekey>,balance" [--account="<privatekey>,balance"]
para asegurarse de que las direcciones en su biblioteca se reutilicen cada vez que inicie.
Puedes hacer algunas cosas bastante complicadas con las pruebas de solidez. (Consulte http://truffleframework.com/tutorials/testing-for-throws-in-solidity-tests ) Sin embargo, a juzgar por los documentos de trufa, tengo la impresión de que es posible que no estén diseñados para su caso de uso.
http://truffleframework.com/docs/getting_started/solidity-tests
pedro sala
.sol
las pruebas tengan un propósito diferente al de las pruebas.js
. Use solidity para probar lógica interna compleja y JavaScript para probar contratos.máx.
.js
pruebas son esencialmente pruebas de integración en virtud de su dependencia deweb3
. Si bien eso puede ser cierto, se pueden usar para probar la lógica compleja del contrato interno tan bien como lo haría una prueba de solidez. Las ventajas de las pruebas de solidez son el desarrollo rápido, se centran en la lógica del contrato en sí (como dices) y requieren menos gastos generales.