반응형
Jasmine을 사용한 각도 단위 테스트: spyOn 제거 또는 수정 방법
AngularJS v1.2.26
Jasmine v2.2.0
의 동작을 변경 또는 삭제하려면 어떻게 해야 합니까?spyOn
? 덮어쓰려고 하면 다음 오류가 나타납니다.Error: getUpdate has already been spied upon
var data1 = 'foo';
var data2 = 'bar';
describe("a spec with a spy", function(){
beforeEach(module('app'));
var $q;
beforeEach(inject(function(_updateService_, _$q_){
updateService = _updateService_;
//spy the results of the getUpdate()
$q = _$q_;
var deferred = $q.defer();
deferred.resolve( data1 );
spyOn(updateService, 'getUpdate').and.returnValue(deferred.promise);
}));
describe('and here the spy should be different', function() {
it('returns a different value', function() {
var deferred = $q.defer();
deferred.resolve( data2 );
spyOn(updateService, 'getUpdate'); //ERROR HERE
updateService.getUpdate.and.returnValue(deferred.promise);
...
});
});
...
두 번째 스파이를 제거하면 테스트가 작동하지 않습니다.
이거 어떻게 해?
덮어쓰기만 하면 됩니다.
updateService.getUpdate = jasmine.createSpy().and.returnValue(etc)
스파이의 반환값을 덮어쓸 수 있습니다.
var deferred = $q.defer();
deferred.resolve( data1 );
var getUpdateSpy = spyOn(updateService, 'getUpdate').and.returnValue(deferred.promise);
var newDeferred = $q.defer();
newDeferred.resolve( data2 );
getUpdateSpy.and.returnValue(newDeferred.promise);
Jasmine v2.5 이후 글로벌 사용allowRespy()
설정.
jasmine.getEnv().allowRespy(true);
전화하실 수 있을 겁니다spyOn()
원하지 않거나 첫 번째 스파이에 접근할 수 있을 때 여러 번.이미 활동 중인 스파이가 있다면 이전 스파이를 돌려보낼 것입니다.
spyOn(updateService, 'getUpdate').and.returnValue(deferred.promise);
...
spyOn(updateService, 'getUpdate').and.returnValue(deferred.promise);
More easier and simpler way:
updateService.getUpdate.and.returnValue(Observable.of({status:true}));
It will return the value.
Another option:
(yourService.method as jasmine.Spy).and.returnValue(value);
the green check-marked answer didn't work for me, but this did:
yourCoolService.createThing = jasmine.createSpy('notreal', function(){}).and.returnValue();
당신의 재스민 테스트는 실행되지만, 당신이 기동하러 갈 때, 당신이 args에 임의의 문자열과 빈 함수를 넣지 않으면 당신의 앱 타이프 스크립트는 당신에게 큰 소리를 지를 것입니다.createSpy()
.
ReferenceURL : https://stackoverflow.com/questions/28821511/angular-unit-testing-with-jasmine-how-to-remove-or-modify-spyon
반응형
'sourcetip' 카테고리의 다른 글
PL/SQL 예외 처리: 아무것도 하지 않음(예외 무시) (0) | 2023.03.04 |
---|---|
AngularJS의 동일한 요소에 두 개의 지시어를 내포하는 방법은 무엇입니까? (0) | 2023.03.04 |
Create nested JSON arrays using FOR JSON PATH (0) | 2023.02.27 |
Transactions in wordpress database (0) | 2023.02.27 |
Jest: mocking console.error - tests fails (0) | 2023.02.27 |