다음과 같은 방법을 염탐한다고 가정 해 보겠습니다.
spyOn(util, "foo").andReturn(true);
테스트중인 함수가 util.foo
여러 번 호출 됩니다.
스파이 true
가 처음 호출 될 때 반환 false
되고 두 번째로 반환 되도록 할 수 있습니까? 아니면 이것에 대해 다른 방법이 있습니까?
답변
spy.and.returnValues (Jasmine 2.4)를 사용할 수 있습니다 .
예를 들면
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();
});
});
당신이주의해야합니다 몇 가지 일이있다, 또 다른 기능은 비슷한 마법을 것이 returnValue
없이 s
당신이 그것을 사용하는 경우, 자스민 당신을 경고하지 않습니다.
답변
이전 버전의 Jasmine의 경우 spy.andCallFake
Jasmine 1.3 또는 spy.and.callFake
Jasmine 2.0에 사용할 수 있으며 간단한 클로저 또는 개체 속성 등을 통해 ‘호출’상태를 추적해야합니다.
var alreadyCalled = false;
spyOn(util, "foo").andCallFake(function() {
if (alreadyCalled) return false;
alreadyCalled = true;
return true;
});