Sinon: `sinon.resetHistory ()` não redefine o histórico

Criado em 8 mai. 2019  ·  11Comentários  ·  Fonte: sinonjs/sinon

De acordo com os documentos :

_Desde [email protected]_
Você pode redefinir o histórico de todos os stubs usando sinon.resetHistory ()

Reproduzir

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

Demonstração do RunKit

Resultados reais

O segundo teste falha:
"" chamado no módulo: deve limpar o status \ "chamado \" em todos os stubs: ❌. [assert.isFalse] Verdadeiro esperado para ser falso ""

Resultados esperados

Todos os testes passam

Bug Medium Help wanted

Todos 11 comentários

Atualizei o problema com o conteúdo do arquivo zip e também o adicionei como uma demonstração RunKit executável, afirmando que funciona.

Eu gostaria de ajudar na correção de bugs

@rpgeeganage Por favor, faça! Aqui está o nosso guia de primeiros passos

Sei que este comentário é mais uma solicitação de recurso, mas seria bom se o objeto "instância stub" tivesse seus próprios métodos resetHistory() (e resetBehavior() e reset() ), sem precisar acertar a caixa de areia inteira.

@mcow Você já tentou? 😄 Os stubs possuem esses recursos desde a versão 2 do Sinon . As adições à sandbox são muito mais recentes.

@ fatso83 ,
Muito obrigado. Vou trabalhar nisso.

Os métodos stub @ fatso83 têm esse recurso. Objetos "Stub instance" , o resultado de uma chamada createStubInstance() (cuja péssima terminologia é sinon, não me culpe pela falta de comunicação), não.

@ fatso83 ,
Eu examinei a implementação de sinon.resetHistory e sinon.createStubInstance .
O que eu noto é que sinon.createStubInstance não usa a implementação de sandbox mas sinon.resetHistory usa a implementação de sandbox . Em sinon.resetHistory o collection está sempre vazio. Eu vou cavar fundo.

@mcow Aha, isso explica as coisas. Eu não percebi o bit _instance_ :) Espero que o mergulho profundo do @rpgeeganage aconteça com algo frutífero.

@ fatso83 , este problema deve ser

TG para observadores astutos 😄

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

kevinburkeshyp picture kevinburkeshyp  ·  4Comentários

akdor1154 picture akdor1154  ·  4Comentários

ALeschinsky picture ALeschinsky  ·  4Comentários

OscarF picture OscarF  ·  4Comentários

NathanHazout picture NathanHazout  ·  3Comentários