Tener en javascript
class GrandParent { myfunc() { console.log('Parent myfunc'); } } class Parent extends GrandParent { myfunc() { // do something else here for (let i = 0; i < 3; i++) { super.myfunc() } } } class Child extends Parent { mymeth() { // do something here this.myfunc(); } } let spy = sinon.spy(Child.<?>, "myfunc") let child = new Child(); child.myfunc(); console.log(spy.callCounts); --> 3 expectedSolo tengo acceso a la clase Child (a través de un requisito que exporta solo esta clase, esto no debe cambiarse) y me gustaría espiar el método myfunc() de la clase GrandParent para obtener spy.callCounts === 3 finalmente.
¿Es posible hacerlo y cómo?
Gracias por adelantado
Debe crear un código auxiliar en GrandParent.prototype .
Además, por razones de seguridad, es mejor instalar primero spys/stubs y luego crear objetos:
Si no es accesible mediante importaciones, puede usar la reflexión (en este caso, "dos veces":
const parentConstructor = Reflect.getPrototypeOf(Child) const grandpaConstructor = Reflect.getPrototypeOf(parentConstructor); let spy = sinon.spy(grandpaConstructor.prototype, "myfunc") let child = new Child(); child.myfunc();