Según los documentos :
_Desde [email protected]_
Puede restablecer el historial de todos los stubs usando sinon.resetHistory ()
Reproducir
const assert = require('chai').assert;
const sinon = require('sinon');
describe('resetHistory', function() {
var num = null;
beforeEach(function() {
num = sinon.createStubInstance(Number);
});
afterEach(() => {
// Restore the default sandbox here
sinon.restore();
});
describe('called on individual stub method', function() {
it('should clear "called" status on stub', function() {
num.toFixed();
assert.isTrue(num.toFixed.called);
num.toFixed.resetHistory();
assert.isFalse(num.toFixed.called);
});
});
describe('called on module', function() {
it('should clear "called" status on all stubs', function() {
num.toFixed();
assert.isTrue(num.toFixed.called);
sinon.resetHistory();
assert.isFalse(num.toFixed.called);
});
});
});
Resultados actuales
La segunda prueba falla:
"" llamado en el módulo: debe borrar el estado \ "llamado \" en todos los stubs: ❌. [assert.isFalse] Se esperaba que verdadero fuera falso ""
Resultados previstos
Todas las pruebas pasan
Actualicé el problema con el contenido del archivo zip y también lo agregué como una demostración RunKit ejecutable, afirmando que funciona.
Me gustaría ayudar a corregir errores.
@rpgeeganage ¡ Por favor, hazlo! Aquí está nuestra guía de inicio
Me doy cuenta de que este comentario es más una solicitud de función, pero sería bueno si el objeto "instancia de código auxiliar" tuviera sus propios métodos resetHistory()
(y resetBehavior()
y reset()
), sin necesidad de golpear toda la caja de arena.
@mcow ¿ tenido esas características desde la versión 2 de Sinon . Las adiciones a la caja de arena son mucho más recientes.
@ fatso83 ,
Muchas gracias. Trabajaré en esto.
Los métodos de código auxiliar de @ fatso83 tienen esa característica. Los objetos de "instancia de código auxiliar createStubInstance()
(cuya pésima terminología es la de Sinon, no me culpes por la falta de comunicación) no lo hacen.
@ fatso83 ,
He investigado la implementación de sinon.resetHistory
y sinon.createStubInstance
.
Lo que noto es que sinon.createStubInstance
no usa la implementación de sandbox
pero sinon.resetHistory
usa la implementación de sandbox
. En sinon.resetHistory
el collection
siempre está vacío. Cavaré profundo.
@mcow Aha, eso explica las cosas. No me di cuenta del bit _instance_ :) Con suerte, @rpgeeganage deep dive encuentra algo fructífero.
@ fatso83 , ¿debería cerrarse este problema ya que los cambios se fusionan en el maestro?
TG para observadores astutos 😄