with unit test node framework async javascript unit-testing mocha sinon chai

javascript - unit - Restablecer "llamado" Cuenta en Sinon Spy



sinon mocha (1)

¿Cómo reinicio el recuento "llamado" en un espía de Sinon antes de cada prueba?

Esto es lo que estoy haciendo ahora:

beforeEach(function() { this.spied = sinon.spy(Obj.prototype, ''spiedMethod''); }); afterEach(function() { Obj.prototype.spiedMethod.restore(); this.spied.reset(); });

Pero cuando reviso el recuento de llamadas en una prueba:

it(''calls the method once'', function() { $.publish(''event:trigger''); expect(this.spied).to.have.been.calledOnce; });

... la prueba falla e informa que el método se llamó X veces (una vez por cada prueba anterior que también activó el mismo evento).


Esta pregunta se hizo hace un tiempo, pero aún puede ser interesante, especialmente para las personas que son nuevas en sinon.

this.spied.reset() no es necesario como Obj.prototype.spiedMethod.restore(); elimina el espía.

Actualización 2018-03-22 :

Como se señaló en algunos de los comentarios a continuación de mi respuesta, stub.reset hará dos cosas:

  1. Eliminar el comportamiento del trozo
  2. Eliminar el historial de stub (callCount).

De acuerdo con la stub.reset este comportamiento se agregó en [email protected].

La respuesta actualizada a la pregunta sería usar stub.resetHistory() .

Ejemplo de la documentación:

var stub = sinon.stub(); stub.called // false stub(); stub.called // true stub.resetHistory(); stub.called // false

Actualizar:

  • Si solo desea restablecer el recuento de llamadas , utilice reset . Esto mantiene al espía.
  • Para eliminar el espía utiliza restore .

Cuando trabaje con sinon, puede utilizar las aserciones de sinon para mejorar las pruebas. Así que en lugar de escribir expect(this.spied).to.have.been.calledOnce; uno podría escribir:

sinon.assert.calledOnce(Obj.prototype.spiedMethod);

Esto funcionaría igual de bien con this.spied .

sinon.assert.calledOnce(this.spied);

Hay muchos otros métodos de afirmación de sinon. Junto a calledOnce calledTwice , también se calledTwice calledWith calledTwice , se calledWith , neverCalledWith y mucho más sobre las afirmaciones de sinon .