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 A
sin 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
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 BStub
que herede B
y anule sus métodos para devolver algunos valores simulados en su lugar. Luego, inicializa su A
contrato con una dependencia de en BStub
lugar de B
. Esto tiene algunos inconvenientes (como la falta de disponibilidad de private
funciones 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.