Sinon: `sinon.resetHistory ()` ne réinitialise pas l'historique

Créé le 8 mai 2019  ·  11Commentaires  ·  Source: sinonjs/sinon

Selon les documents :

_Depuis [email protected]_
Vous pouvez réinitialiser l'historique de tous les stubs en utilisant sinon.resetHistory ()

Reproduire

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

Démo RunKit

Résultats actuels

Le deuxième test échoue:
"" appelé sur le module: devrait effacer le statut \ "appelé \" sur tous les stubs: ❌. [assert.isFalse] On s'attend à ce que true soit faux ""

Résultats attendus

Tous les tests réussissent

Bug Medium Help wanted

Tous les 11 commentaires

J'ai mis à jour le problème avec le contenu du fichier zip et l' ai également ajouté en tant que

J'aimerais aider à corriger les bogues

@rpgeeganage S'il vous plaît faites! Voici notre guide de démarrage

Je me rends compte que ce commentaire est plus une demande de fonctionnalité, mais ce serait bien si l'objet "instance stub" avait ses propres méthodes resetHistory() (et resetBehavior() et reset() ), sans avoir besoin de toucher l'ensemble du bac à sable.

@mcow Avez-vous essayé? 😄 Les stubs ont ces fonctionnalités depuis la version 2 d'Autre . Les ajouts de sandbox sont beaucoup plus récents.

@ fatso83 ,
Merci beaucoup. Je vais y travailler.

@ fatso83 Les méthodes de stub ont cette fonctionnalité. Les objets "Stub instance" , le résultat d'un appel createStubInstance() (dont la terminologie moche est sinon, ne me blâmez pas pour la mauvaise communication) ne le font pas.

@ fatso83 ,
J'ai examiné l'implémentation de sinon.resetHistory et sinon.createStubInstance .
Ce que je remarque, c'est que sinon.createStubInstance n'utilise pas l'implémentation de sandbox mais sinon.resetHistory utilise l'implémentation de sandbox . Dans sinon.resetHistory le collection est toujours vide. Je vais creuser profondément.

@mcow Aha, ça explique les choses. Je n'ai pas remarqué le bit _instance_ :) Espérons que la plongée profonde @rpgeeganage aboutisse à quelque chose de fructueux.

@ fatso83 , ce problème doit-il être

TG pour les observateurs avisés 😄

Cette page vous a été utile?
0 / 5 - 0 notes