과 같은 this qunit test을 사용하려고 할 때 jasmine을 사용하면 이상한 일이 발생합니다. (통화 횟수가 3 동일)재스민을 사용하여 비동기 기능을위한 사양
it('_.debounce()', function() {
var spy = jasmine.createSpy('debounce'),
debouncedSpy = _.debounce(spy, 100);
jasmine.Clock.useMock();
// direct calls
debouncedSpy();
debouncedSpy();
debouncedSpy();
// timed out calls
setTimeout(debouncedSpy, 60);
setTimeout(debouncedSpy, 120);
setTimeout(debouncedSpy, 180);
setTimeout(debouncedSpy, 240);
setTimeout(debouncedSpy, 300);
jasmine.Clock.tick(300);
expect(spy).toHaveBeenCalled();
jasmine.Clock.tick(400);
expect(spy).toHaveBeenCalled();
jasmine.Clock.tick(1000);
expect(spy.callCount).toBe(1);
});
그것은 작동하지 않습니다
는 jasmine.Clock.useMock()
... 를 사용하여 테스트 할 수있는 것 같다하지만 쓸 때. 하지만 직접 전화를하지 않고 (또는 내가 setTimeout(..., 0)
을 사용할 때) 모든 것이 잘 작동합니다. 내가 뭘 잘못하고있어?
또한 runs
과 waits
을 통해 처리하려고 시도했으며 작동합니다. 그러나 이전 예제에서 왜 작동하지 않습니까?
it('should be called once', function() {
var spy = jasmine.createSpy('debounce'),
debouncedSpy = _.debounce(spy, 100);
runs(function() {
debouncedSpy();
debouncedSpy();
debouncedSpy();
expect(spy).not.toHaveBeenCalled();
setTimeout(debouncedSpy, 60);
setTimeout(debouncedSpy, 120);
setTimeout(debouncedSpy, 180);
setTimeout(debouncedSpy, 240);
setTimeout(debouncedSpy, 300);
});
waits(800);
runs(function() {
expect(spy.callCount).toBe(1);
});
});
QUnit에서 테스트 해보십시오. 또한 기능 설명을 위해. 그것은 '1'과 같아야합니다. – ValeriiVasin