[typescript] 타입스크립트 단위 테스트 작성 시 상속과 다형성 관련 이슈

타입스크립트는 객체지향 언어로써 상속과 다형성을 지원합니다. 단위 테스트를 작성할 때, 이러한 객체지향의 특징들을 고려해야 하는데, 특히 상속과 다형성을 다룰 때에는 몇 가지 이슈에 유의해야 합니다.

다형성과 상속

다형성은 여러 개의 클래스가 부모 클래스의 메서드를 오버라이딩하여 다양한 방식으로 동작하는 것을 의미합니다. 이는 테스트 시에 다양한 클래스의 인스턴스를 동일한 방식으로 다룰 수 있게 해줍니다.

상속은 부모 클래스의 특성을 자식 클래스가 물려받는 것을 의미하는데, 이는 테스트 코드 작성 시에 부모 클래스와 자식 클래스 간의 관계를 고려해야 함을 의미합니다.

단위 테스트 작성 시 고려해야 할 사항

다형성을 활용하여 여러 클래스의 인스턴스를 동일한 방식으로 다룰 때, 각 클래스가 제대로된 동작을 하는지 확인해야 합니다. 또한 상속 관계가 있을 경우, 부모 클래스와 자식 클래스 간의 동작에 대한 테스트도 작성해야 합니다.

부모 클래스의 메서드가 자식 클래스에 의해 오버라이딩 되었을 때, 이러한 다형성을 고려하여 테스트를 작성해야 합니다. 또한 오버라이딩된 메서드가 소위 “super 호출”을 제대로 다루고 있는지에 대해서도 테스트가 필요합니다.

예시 코드

다음은 타입스크립트에서 간단한 다형성과 상속을 다룬 예시 코드입니다.

class Animal {
  sound(): string {
    return "Sound";
  }
}

class Dog extends Animal {
  sound(): string {
    return "Bark";
  }
}

class Cat extends Animal {
  sound(): string {
    return "Meow";
  }
}

function makeSound(animal: Animal): string {
  return animal.sound();
}

위 코드에서 makeSound 함수는 Animal 클래스를 상속받은 Dog와 Cat 클래스의 인스턴스를 동일한 방식으로 다루고 있습니다.

결론

타입스크립트에서 단위 테스트를 작성할 때 다형성과 상속을 고려하는 것은 중요합니다. 다양한 클래스의 동작을 테스트하는 것과 함께, 상속 관계에 있는 클래스들 간의 동작에 대한 테스트를 작성하여 안정적이고 안정성 있는 코드를 작성할 수 있습니다.

이러한 개념들을 이해하고 효과적으로 활용하는 것은 타입스크립트 코드의 품질을 높일 수 있으며, 유지보수성과 확장성을 향상시킬 수 있습니다.

참고 자료