[typescript] Angular 테스트

Angular 프로젝트에서 테스트는 애플리케이션의 안정성을 보장하고 코드 품질을 향상시키는 데 중요한 부분입니다. Angular 애플리케이션을 테스트하는 방법을 살펴보겠습니다.

Jasmine 및 Karma 사용

Angular 애플리케이션은 주로 Jasmine 및 Karma를 사용하여 테스트됩니다. Jasmine은 BDD(행위 주도 개발)를 위한 테스트 프레임워크이며, Karma는 테스트를 실행하는 도구로서 브라우저에서 JavaScript 코드를 실행하고 테스트 결과를 수집합니다.

테스트 환경 설정

먼저 Angular 프로젝트에 테스트 환경을 설정해야 합니다. @angular/cli를 사용하고 있다면, CLI를 사용하여 기본 테스트 환경을 설정할 수 있습니다.

ng test

이 명령은 Karma를 사용하여 테스트를 실행하고, 변경 사항을 감지하여 자동으로 다시 실행할 수 있도록 --watch 플래그를 추가할 수 있습니다.

컴포넌트 테스트

Angular 컴포넌트를 테스트하는 것은 중요합니다. 컴포넌트 테스트를 작성하여 컴포넌트의 동작을 검증할 수 있습니다.

예를 들어, 다음은 Angular 컴포넌트를 테스트하는 간단한 예제입니다.

import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MyComponent } from './my-component.component';

describe('MyComponent', () => {
  let component: MyComponent;
  let fixture: ComponentFixture<MyComponent>;

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      declarations: [ MyComponent ]
    })
    .compileComponents();
  });

  beforeEach(() => {
    fixture = TestBed.createComponent(MyComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

이 예제에서는 TestBed.configureTestingModule를 사용하여 컴포넌트를 테스트 모듈에 등록하고, TestBed.createComponent를 사용하여 컴포넌트의 인스턴스를 생성합니다. 그런 다음, 컴포넌트의 초기화 및 동작을 테스트합니다.

서비스 테스트

Angular 서비스도 마찬가지로 중요합니다. 서비스를 테스트하여 서비스의 메서드 및 동작을 검증할 수 있습니다.

예를 들어, 다음은 Angular 서비스를 테스트하는 간단한 예제입니다.

import { TestBed } from '@angular/core/testing';
import { MyService } from './my-service.service';

describe('MyService', () => {
  let service: MyService;

  beforeEach(() => {
    TestBed.configureTestingModule({});
    service = TestBed.inject(MyService);
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });
});

이 예제에서는 TestBed.configureTestingModule를 사용하여 서비스를 테스트 모듈에 등록하고, TestBed.inject를 사용하여 서비스의 인스턴스를 가져옵니다. 그런 다음, 서비스의 초기화 및 동작을 테스트합니다.

테스트 커버리지 및 CI/CD

마지막으로, 테스트 커버리지를 유지하고 CI/CD(지속적 통합/지속적 배포) 파이프라인에 테스트를 통합하여 안정성을 유지하는 것이 중요합니다.

Angular 프로젝트에서 테스트를 작성하고 실행하는 방법을 통해 코드의 품질과 성능을 향상시킬 수 있습니다.

이상으로 Angular 테스트에 대한 간략한 소개였습니다.

더 많은 정보를 원하시면 Angular Testing Guide를 참조하시기 바랍니다.