async
async
모든 작업 이 완료 될 때까지 다음 테스트가 시작되는 것을 허용하지 않습니다 . 어떤 async
일은 모든 비동기 작업이 (예를 들면 지역에 콜백을 포장입니다 setTimeout
) 추적됩니다. 모든 비동기 작업이 완료 async
되면 완료됩니다.
Angular 외부에서 Jasmine으로 작업 한 적이 있다면 done
콜백으로 전달되는 것을 보았을 것입니다.
it('..', function(done) {
someAsyncAction().then(() => {
expect(something).toBe(something);
done();
});
});
여기에서 이것은 네이티브 Jasmine입니다. 여기에서 Jasmine에을 호출 할 때까지이 테스트가 완료를 지연해야한다고 말합니다 done()
. 전화 done()
를하지 않고 대신 이렇게했다면 :
it('..', function() {
someAsyncAction().then(() => {
expect(something).toBe(something);
});
});
테스트가 동기 작업 실행을 마친 후에 약속이 해결되기 때문에 예상보다 먼저 테스트가 완료됩니다.
(재스민 환경에서) 각도로, 각도가 실제로 호출 done
우리가 사용할 때 뒤에서 async
. Zone의 모든 비동기 작업을 추적하고 작업이 모두 완료되면 done
배후에서 호출됩니다.
TestBed
구성 과 관련된 특정 경우에는 일반적으로 compileComponents
. 그렇지 않으면 전화해야 할 상황에 거의 맞지 않습니다.
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [MyModule],
schemas: [NO_ERRORS_SCHEMA],
})
.compileComponent().then(() => {
fixture = TestBed.createComponent(TestComponent);
});
}));
사용하는 구성 요소를 테스트 할 때 templateUrl
(웹팩을 사용하지 않는 경우) Angular는 템플릿을 가져 오기 위해 XHR 요청을해야하므로 구성 요소 컴파일이 비동기 적입니다. 따라서 테스트를 계속하기 전에 문제가 해결 될 때까지 기다려야합니다.
async
필요하지 않습니다. 을 사용templateUrl
하는 경우입니다. 그러나 포함async
은 인라인 템플릿 구성 요소를 "중단"하지 않습니다.async
모든 테스트에 기본적으로 사용할 수 있다고 말하는 것이 안전하다고 생각하십니까 ?