Angular단위 테스트를 수행하는 방법은 무엇입니까? 이 기사에서는 Angular 단위 테스트 작성을 위한 4가지 고급 기술을 공유하겠습니다. 이것이 도움이 되기를 바랍니다.
테스트 아이디어:
이 문서에 사용된 테스트 기술 스택:Angular12
+Jasmine 다른 테스트 기술의 구문은 다르지만 전체적인 아이디어는 유사합니다. [관련 튜토리얼 추천: "angular tutorial"]
Tips: Jasmine 테스트 케이스 결정, 방법은 무엇인지 여기에서 찾을 수 있습니다.Poke meUnit test
Function testbeforeEach(() => { fixture = TestBed.createComponent(BannerComponent); component = fixture.componentInstance; fixture.detectChanges(); });로그인 후 복사
function test(index:number ,fn:Function){ if(fn){ fn(index); } }
테스트 방법은 무엇입니까?
카운터 예: 정의되지 않은 반환 값을 직접 테스트권장 사례:const res = component.test(1,() => {})); expect(res).tobeUndefined();로그인 후 복사
구조 지침 HostListener 테스트# 利用Jasmine it('should get correct data when call test',() =>{ const param = { fn:() => {} } spyOn(param,'fn') component.test(1,param.fn); expect(param.fn).toHaveBeenCalled(); })로그인 후 복사
테스트 아이디어:테스트 방법은?# code @Directive({ selector: '[ImageURlError]' }) export class ImageUrlErrorDirective implements OnChanges { constructor(private el: ElementRef) {} @HostListener('error') public error() { this.el.nativeElement.style.display = 'none'; } }로그인 후 복사
이미지 로딩 오류가 발생하면 오류를 발생시키는 방법을 찾으세요
#1.添加一个自定义组件, 并添加上自定义指令 @Component({ template: `<div> <image src="https://xxx.ss.png" ImageURlError></image> </div>` }) class TestHostComponent { } #2.把自定义组件视图实例化,并派发errorEvent beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ TestHostComponent, ImageURlError ] }); })); beforeEach(() => { fixture = TestBed.createComponent(TestHostComponent); component = fixture.componentInstance; fixture.detectChanges(); }); it('should allow numbers only', () => { const event = new ErrorEvent('error', {} as any); const image = fixture.debugElement.query(By.directive(ImageURlError)); image.nativeElement.dispatchEvent(event); //派发事件即可,此时error()方法就会被执行到 });
단위 테스팅과 테스트 메소드를 하나씩 할 예정이라면 공개적으로 적절히 활용해주세요 --- 난이도 *
각 메소드 테스트를 할 예정이 아니라면 자료 정리는 입구로 전화주세요 , 통합 테스트를 통해 메서드 전달 -- 난이도 ***
# xx.component.ts @Component({ selecotr: 'dashboard-hero-list' }) class DashBoardHeroComponent { public cards = [{ click: () => { ..... } }] } # html <dashboard-hero-list [cards]="cards" class="card"> </dashboard-hero-list>`
Host를 사용하지 않고 구성 요소를 직접 테스트테스트 아이디어:
코드에서 반환된 클릭 이벤트가 포함된 개체 컬렉션을 사용하여 하나씩 클릭을 호출하면 코드 적용 범위가 향상됩니다.
it('should get correct data when call click',() => { const cards = component.cards; cards?.forEach(card => { if(card.click){ card.click(new Event('click')); } }); expect(cards?.length).toBe(1); });
그런 다음 Fixture.nativeElement.querySelector('.card')를 사용하여 바인딩된 클릭 요소를 찾습니다. 요소에서 dispatchEvent를 트리거합니다. 즉,TestHostComponent를 사용하여 테스트해야 하는 구성 요소를 래핑합니다.
('click');
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !
위 내용은 Angular 단위 테스트 작성을 위한 4가지 팁, 와서 살펴보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!