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