test spyon examples example javascript unit-testing jasmine

spyon - spy test javascript



Jasmine Spies.and.stub method (2)

He estado leyendo la documentación de Jasmine y he estado luchando para entender lo que realmente hace el método Spies .and.stub . El inglés no es mi idioma nativo, por lo que ni siquiera sé qué significa realmente la palabra "stub", y no hay traducción para mi idioma.

En la documentación dice:

Cuando se utiliza una estrategia de llamada para un espía, el comportamiento del apéndice original puede devolverse en cualquier momento con y.stub.

describe("A spy", function() { var foo, bar = null; beforeEach(function() { foo = { setBar: function(value) { bar = value; } }; spyOn(foo, ''setBar'').and.callThrough(); }); it("can call through and then stub in the same spec", function() { foo.setBar(123); expect(bar).toEqual(123); foo.setBar.and.stub(); bar = null; foo.setBar(123); expect(bar).toBe(null); }); });

¿Qué hace realmente and.stub y en qué sirve?



Para el término, puede mirar wikipedia: http://en.wikipedia.org/wiki/Test_stub

En pocas palabras, es un objeto "falso" que puedes controlar y reemplaza un objeto "real" en tu código.

Para la función, lo que entiendo es que and.stub() elimina el efecto de and.callThrough() en un espía.

Cuando llama a and.callThrough , el espía actúa como un proxy, llama a la función real, pero pasa a través de un objeto espía que le permite agregar pruebas como la expectativa.

Cuando llamas a and.stub , o si nunca llamas a and.callThrough , el espía no llamará a la función real. Es realmente útil cuando no desea probar el comportamiento de un objeto, pero asegúrese de que haya sido llamado. Ayudándole a mantener su prueba verdaderamente unitaria.