나는라는 각도 서비스를 가지고 있습니다 requestNotificationChannel
:
app.factory("requestNotificationChannel", function($rootScope) {
var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_";
function deleteMessage(id, index) {
$rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index });
};
return {
deleteMessage: deleteMessage
};
});
jasmine을 사용 하여이 서비스를 단위 테스트하려고합니다.
"use strict";
describe("Request Notification Channel", function() {
var requestNotificationChannel, rootScope, scope;
beforeEach(function(_requestNotificationChannel_) {
module("messageAppModule");
inject(function($injector, _requestNotificationChannel_) {
rootScope = $injector.get("$rootScope");
scope = rootScope.$new();
requestNotificationChannel = _requestNotificationChannel_;
})
spyOn(rootScope, '$broadcast');
});
it("should broadcast delete message notification", function(done) {
requestNotificationChannel.deleteMessage(1, 4);
expect(rootScope.$broadcast).toHaveBeenCalledWith("_DELETE_MESSAGE_", { id: 1, index: 4 });
done();
});
});
Jasmine의 비동기 지원에 대해 읽었지만 자바 스크립트로 단위 테스트를 처음 접했을 때 작동하지 못했습니다.
오류가 발생했습니다 :
Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL
내 테스트를 실행하는 데 시간이 너무 오래 걸립니다 (약 5 초).
누군가 내 코드의 실제 예제를 설명하는 데 도움을 줄 수 있습니까?
Jest
예상 보다 실행 시간이 오래 걸리면 동일한 오류가 발생 합니다. 디버깅하고 변수를 검사하는 데 시간이 걸리는 경우가 매우 흔합니다.
afterEach
데이터베이스를 지우는 단계 가 있음을 깨달았습니다 ( deleteMany
메서드 사용). 추가 jest.setTimeout(30000);
의 beforeAll
방법은 나를 위해이 문제를 해결 한 것 같다 - 데이터베이스 삭제 (조건 내부) 네트워크 호출이기 때문에 나는 가끔 3 초와 던지는 것보다 많은 시간이 소요되었다 같은데요.