Angular 2 테스트-비동기 함수 호출-사용시기
Angular 2에서 테스트 할 때 TestBed 에서 비동기 기능을 언제 사용 합니까?
언제 사용합니까?
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [MyModule],
schemas: [NO_ERRORS_SCHEMA],
});
});
그리고 언제 이것을 사용합니까?
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [MyModule],
schemas: [NO_ERRORS_SCHEMA],
});
}));
누구든지 이것에 대해 나를 깨달을 수 있습니까?
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 요청을해야하므로 구성 요소 컴파일이 비동기 적입니다. 따라서 테스트를 계속하기 전에 문제가 해결 될 때까지 기다려야합니다.
테스트에서 비동기 호출을 할 때 실제 테스트 함수는 비동기 호출이 완료되기 전에 완료됩니다. 호출이 완료되었을 때 일부 상태를 확인해야하는 경우 (일반적으로 해당) 테스트 프레임 워크는 여전히 비동기 작업이 진행되는 동안 테스트가 완료된 것으로보고합니다.
using async(...)
을 사용 하면 테스트를 완료된 것으로 처리하기 전에 반환 약속 또는 관찰 가능 항목이 완료 될 때까지 기다리도록 테스트 프레임 워크에 지시합니다.
it('should show quote after getQuote promise (async)', async(() => {
fixture.detectChanges();
fixture.whenStable().then(() => { // wait for async getQuote
fixture.detectChanges(); // update view with quote
expect(el.textContent).toBe(testQuote);
});
}));
The code passed to then(...)
will be executed after the test function itself completed. With async()
you make the test framework aware, that it needs to wait for promises and observables to complete before treating the test as completed.
See also
참고URL : https://stackoverflow.com/questions/40126729/angular-2-testing-async-function-call-when-to-use
'developer tip' 카테고리의 다른 글
람다를 사용하는 DbQuery.Include () 오버로드는 어디로 갔습니까? (0) | 2020.10.30 |
---|---|
Linux 커널의 container_of 매크로 이해 (0) | 2020.10.30 |
Firefox가 잘못된 SSL 인증서를 무시하도록하는 방법이 있습니까? (0) | 2020.10.30 |
더 나은 데이터베이스 디자인은 무엇입니까 : 더 많은 테이블 또는 더 많은 열? (0) | 2020.10.30 |
iPhone 자동 테스트 (0) | 2020.10.30 |