Respuestas:
Puede utilizar spy.and.returnValues (como Jasmine 2.4).
por ejemplo
describe("A spy, when configured to fake a series of return values", function() {
beforeEach(function() {
spyOn(util, "foo").and.returnValues(true, false);
});
it("when called multiple times returns the requested values in order", function() {
expect(util.foo()).toBeTruthy();
expect(util.foo()).toBeFalsy();
expect(util.foo()).toBeUndefined();
});
});
No es algo que usted debe tener cuidado, hay otra función hechizo similares returnValue
sin s
, si se utiliza que, jazmín no advertirle.
Para versiones anteriores de Jasmine, puede usar spy.andCallFake
Jasmine 1.3 o spy.and.callFake
Jasmine 2.0, y tendrá que realizar un seguimiento del estado 'llamado', ya sea a través de un cierre simple o propiedad de objeto, etc.
var alreadyCalled = false;
spyOn(util, "foo").andCallFake(function() {
if (alreadyCalled) return false;
alreadyCalled = true;
return true;
});
.returnValues
: las dos funciones son obviamente diferentes, pero pasar múltiples argumentos a.returnValue
no arroja un error. No quiero admitir cuánto tiempo perdí debido a ese personaje.