반응형
Jasmine 스파이에서 여러 호출에 대해 서로 다른 반환 값을 갖는 방법
다음과 같은 방법을 염탐한다고 가정 해 보겠습니다.
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;
});
각 호출에 대한 사양을 작성하려면 beforeEach 대신 beforeAll을 사용할 수도 있습니다.
describe("A spy taking a different value in each spec", function() {
beforeAll(function() {
spyOn(util, "foo").and.returnValues(true, false);
});
it("should be true in the first spec", function() {
expect(util.foo()).toBeTruthy();
});
it("should be false in the second", function() {
expect(util.foo()).toBeFalsy();
});
});
반응형
'programing tip' 카테고리의 다른 글
사람이 읽을 수있는 형식의 타임 스탬프 (0) | 2020.10.10 |
---|---|
MySQL 사용자를 만들 때 호스트에 % 사용 (0) | 2020.10.10 |
Docker 작성, net : host에서 컨테이너 실행 (0) | 2020.10.10 |
Ruby 문자열 또는 기호에 대해 문자열 동등성을 테스트하는 가장 간결한 방법 (객체 동등성이 아님)? (0) | 2020.10.10 |
Maven WAR 종속성 (0) | 2020.10.10 |