Digamos que tenemos una función como esta en flow.js, que es un componente web, por lo que todas son funciones dentro de una clase dentro de este archivo.
change(){ this.getParams(); this.loadData(); }Quiero escribir un caso de prueba que pueda probar el cambio () y confirmar si se han invocado estas dos funciones. Intenté muchos enfoques pero no funcionó. Uno de los enfoques que probé es:
it('change() test', function () { const sandbox = sinon.createSandbox(); sandbox.spy(el); el.change(); assert(el.change.calledOnce); // output is true assert(el.getParams.calledOnce); // output is false assert(el.loadData.calledOnce); // output is false }el es el objeto/componente web.
¿Podría decirme qué está mal aquí y cuál es la implementación correcta para este escenario?
Debe agregar spy a el.getParams() y el.loadData() .
P.ej
flow.js :
class Flow { change() { this.getParams(); this.loadData(); } getParams() {} loadData() {} } module.exports = Flow; flow.test.js :
const Flow = require('./flow'); const sinon = require('sinon'); describe('flow', () => { it('should pass', () => { const sandbox = sinon.createSandbox(); const flow = new Flow(); sandbox.spy(flow, 'getParams'); sandbox.spy(flow, 'loadData'); flow.change(); sinon.assert.calledOnce(flow.getParams); sinon.assert.calledOnce(flow.loadData); }); });