Sinon: `sinon.resetHistory ()` no restablece el historial

Creado en 8 may. 2019  ·  11Comentarios  ·  Fuente: sinonjs/sinon

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);
    });
  });
});

Demostración de RunKit

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

Bug Medium Help wanted

Todos 11 comentarios

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 😄

¿Fue útil esta página
0 / 5 - 0 calificaciones