
테스트 아이디어:
테스트의 난이도도 점차 높아지고 시간도 더 많이 걸립니다. 테스트를 간단하게 만들고 싶다면 개발 중에 의식적으로 아이디어를 명확하게 하고 간단하고 효율적인 코드를 작성해야 합니다~.
이 기사에서 사용된 테스트 기술 스택: Angular12 + Jasmine 다른 테스트 기술의 구문은 다르지만 전체적인 아이디어는 유사합니다. [관련 튜토리얼 권장사항: "angular 튜토리얼"]
팁: Jasmine 테스트 사례 결정, 방법은 무엇입니까? 여기에서 찾을 수 있습니다. 내
기본값은 테스트할 개체의 인스턴스입니다. 다음 구문을 사용하는 각도
beforeEach(() => {
Fixture = TestBed.createComponent(BannerComponent);
구성요소 = Fixture.comComponentInstance;
Fixture.DetectChanges();
}); 1. 반환 값이 없는 함수 호출
function test(index:number,fn:Function){
만약(fn){
fn(인덱스);
}
} 테스트 방법은 무엇입니까?
반대 예: 반환 값을 직접 테스트 undefed
const res = component.test(1,() => {}));
Expect(res).tobeUndefine(); 권장 사례:
# Jasmine을 사용하세요.
it('호출 테스트 시 올바른 데이터를 얻어야 합니다.',() =>{
const 매개변수 = {
fn: () => {}
}
spyOn(param,'fn')
컴포넌트.테스트(1,param.fn);
기대(param.fn).toHaveBeenCalled();
}) 일반적으로 사용되는 단어로 숨기기, 표시 및 for 루프를 사용하여 이러한 기능을 표시합니다
.
@Directive({ 선택기: '[ImageURlError]' })
내보내기 클래스 ImageUrlErrorDirective는 OnChanges를 구현합니다.
생성자(private el: ElementRef) {}
@HostListener('오류')
공개 오류() {
this.el.nativeElement.style.display = '없음';
}
} 테스트 방법은 무엇입니까?
테스트 아이디어:
#1 아래에 연결됩니다. 사용자 정의 구성요소를 추가하고 사용자 정의 지시문 @Component({
템플릿: `<div>
<image src="https://xxx.ss.png" ImageURlError></image>
</div>`
})
클래스 TestHostComponent {
}
#2. 사용자 정의 구성 요소 보기를 인스턴스화하고 errorEvent를 전달합니다.
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
선언: [
테스트호스트컴포넌트,
이미지URL 오류
]
});
}));
beforeEach(() => {
Fixture = TestBed.createComponent(TestHostComponent);
구성요소 = Fixture.comComponentInstance;
Fixture.DetectChanges();
});
it('숫자만 허용해야 합니다.', () => {
const event = new ErrorEvent('error', {});
const image = Fixture.debugElement.query(By.directive(ImageURlError));
image.nativeElement.dispatchEvent(event); //이벤트를 전달하면 error() 메서드가 실행됩니다.}); 각도, 사양의 공개
단위 테스트를.ts는 액세스할 수 있지만 개인적이고 보호된 수정은 허용되지 않습니다.
수행
클릭 이벤트를 전달할 수 있습니다. 클릭 이벤트의 트리거에는 직접 js 호출 클릭 또는 클릭 이벤트를 트리거하기 위한 마우스 모방이 포함될 수 있습니다.
#xx.컴포넌트.ts
@요소({
선택 항목: 'dashboard-hero-list'
})
클래스 DashBoardHeroComponent {
공용 카드 = [{
클릭: () => {
.....
}
}]
}
#html
<dashboard-hero-list [카드]="카드" 클래스="카드">
</dashboard-hero-list>` 테스트 방법은 무엇입니까?
테스트 아이디어:
('클릭 호출 시 올바른 데이터를 얻어야 합니다', () => {
const 카드 = 구성요소.카드;
카드?.forEach(카드 => {
if(카드.클릭){
카드.클릭(새 이벤트('클릭'));
}
});
기대(카드?.길이).toBe(1);
}); 기타 클릭 참조 아이디어:
아이디어 1:
아이디어 2:
Host를하지 않고 구성 요소를 직접 테스트한
사용
하여 바인딩된 클릭 요소를 찾습니다.