¿Cómo se usarían los stubs para el código de solidez de las pruebas unitarias?

Dado algún contrato A, que depende de otro contrato B, ¿cuál sería la mejor manera de probar las funciones de la unidad Asin probar inadvertidamente el código de B.

Normalmente, podríamos usar stubs para devolver datos que son los mismos cada vez, pero esto es complicado de hacer manualmente incluso con una cantidad moderada de código (generar, compilar e implementar el stub).

¿Hay algún marco o biblioteca que tenga este tipo de funcionalidad incorporada?

También estaría feliz de proporcionar un ejemplo de código si la descripción anterior es demasiado abstracta; solo comenta

Estoy usando:

  • mochajs con afirmaciones chai
  • trufa para un marco de prueba
  • ethereumjs-testrpc para red de prueba

Respuestas (2)

Puede crear un contrato de resguardo. Desplegarlo en la prueba usando trufa no es engorroso. Puedes hacerlo así:

token1 = await Token.new()

Algo que he hecho en el pasado es crear un contrato 'Stub' separado. Por lo tanto, si desea crear un contrato auxiliar B, cree otro contrato BStubque herede By anule sus métodos para devolver algunos valores simulados en su lugar. Luego, inicializa su Acontrato con una dependencia de en BStublugar de B. Esto tiene algunos inconvenientes (como la falta de disponibilidad de privatefunciones de B), pero puede funcionar bien. No estoy seguro de si hay mejores formas de hacer esto usando una biblioteca o algo así, pero esta puede ser una buena solución.