w3school property bootstrap javascript jasmine spy jasmine2.0

javascript - property - title html



Restablecer llamada en espĂ­a Jasmine no vuelve (2)

La sintaxis de Jasmine 2 es diferente de 1.3 con respecto a las funciones de espía. Ver los documentos de Jasmine here .

Específicamente, restableces un espía con spy.calls.reset();

Así es como debería verse la prueba:

// Source var objectUnderTest = { someFunction: function (cb) { var promise = new Promise(function (resolve, reject) { if (true) { cb(); resolve(); } else { reject(new Error("something bad happened")); } }); return promise; } } // Test describe(''foo'', function () { it(''tests'', function (done) { var spy = jasmine.createSpy(''mySpy''); objectUnderTest.someFunction(spy).then(function () { expect(spy).toHaveBeenCalled(); done(); }); }); it(''tests deeper'', function (done) { var spy = jasmine.createSpy(''mySpy''); objectUnderTest.someFunction(spy).then(function () { expect(spy).toHaveBeenCalled(); spy.calls.reset(); return objectUnderTest.someFunction(spy); }).then(function () { expect(spy).toHaveBeenCalled(); expect(spy.calls.count()).toBe(1); done(); }); }); });

Ver violín here

Estoy usando un espía Jasmine (2.2.0) para ver si se llama a un cierto callback.

Código de prueba:

it(''tests'', function(done) { var spy = jasmine.createSpy(''mySpy''); objectUnderTest.someFunction(spy).then(function() { expect(spy).toHaveBeenCalled(); done(); }); });

Esto funciona como se esperaba. Pero ahora, estoy agregando un segundo nivel:

it(''tests deeper'', function(done) { var spy = jasmine.createSpy(''mySpy''); objectUnderTest.someFunction(spy).then(function() { expect(spy).toHaveBeenCalled(); spy.reset(); return objectUnderTest.someFunction(spy); }).then(function() { expect(spy.toHaveBeenCalled()); expect(spy.callCount).toBe(1); done(); }); });

Esta prueba nunca vuelve, porque aparentemente la devolución de llamada done nunca se llama. Si spy.reset() la línea spy.reset() , la prueba finaliza, pero obviamente falla en la última expectativa. Sin embargo, el campo callCount parece estar undefined , en lugar de 2 .


Otra forma de escribirlo:

spyOn(foo, ''bar''); expect(foo.bar).toHaveBeenCalled(); foo.bar.calls.reset();