¿Cómo acceder a las cuentas de prueba creadas por TestRPC desde una prueba de Solidity con Truffle?

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?

Respuestas (1)

Me gustaría hacer una sugerencia.

En el TestMetaCoin.solejemplo, 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

Es razonable. A medida que avanzo en el desarrollo de Solidity, me doy cuenta de que tal vez .sollas pruebas tengan un propósito diferente al de las pruebas .js. Use solidity para probar lógica interna compleja y JavaScript para probar contratos.
Yo diría que eso es correcto. Escuché el argumento de que las .jspruebas son esencialmente pruebas de integración en virtud de su dependencia de web3. 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.