본문 바로가기

타입스크립트14

의존성 분리와 스텁 이번에는 일관된 테스트를 진행하기 위해 의존성을 해소하는 방법 중 “스텁”을 사용하는 방법을 살펴보려고 합니다. 그전에 먼저 의존성의 유형을 먼저 알아보고, 이후 작업 단위에 스텁을 주입하는 방법을 살펴보겠습니다.의존성 유형작업 단위에서 사용할 수 있는 의존성은 내부로 들어오는지, 외부로 나가는지에 따라 스텁(stub)과 목(mock)으로 나뉩니다. 그리고 이런 가짜 의존성을 포괄하여 테스트 더블 이라고 합니다.스텁: 내부로 들어오는 의존성스텁은 종료점을 나타내지 않는 의존성으로, 테스트에 필요한 특수한 데이터나 동작을 작업 단위에 제공하는 역할을 합니다. 예를 들면, 특정 라이브러리를 활용한 데이터나 데이터베이스의 쿼리 결과, 네트워크 응답 결과 등이 있으며 이전 작업의 결과들이라고 볼 수 있습니다. .. 2025. 3. 2.
[타입스크립트로 살펴보는 디자인패턴 11] 컴포지트 패턴 🙋‍♂️ 디자인패턴 구현코드 깃헙컴포지트 패턴(Composite Pattern)컴포지트 패턴으로 객체 트리구조로 구성해서 부분-전체 계층 구조를 구현한다. 컴포지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있다.각 항목들을 트리구조로 구성하여 부분-전체 계층 구조(part-whole hierarchy)를 생성하면 개별 객체와 복합 객체에서 동일한 방식을 적용할 수 있다. 자식 원소가 있는 원소를 노드(node)라 부르고, 자식이 없는 원소를 잎(leaf)이라고 부른다.클라이언트는 Component 인터페이스를 사용해서 복합 객체 내의 객체들을 조작할 수 있다.Component는 복합 객체 내에 들어있는 모든 객체의 인터페이스를 정의한다. 복합 노드와 잎에 관한 .. 2025. 1. 3.
[타입스크립트로 살펴보는 디자인패턴 10] 반복자 패턴 🙋‍♂️ 디자인패턴 구현코드 깃헙반복자 패턴(Interator Pattern)반복자 패턴은 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공한다.반복자 패턴을 사용하면 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있기 때문에 종류에 관계없이 모든 집합체에 사용할 수 있는 다형적인 코드를 만들 수 있다. 또한 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체가 맡게 되면서 집합체의 인터페이스와 구현이 간단해지고, 집합체는 원래 자신이 하는 일인 객체 컬렉션 관리에만 전념할 수 있게 된다.메뉴판 시스템코드배열 컬렉션과 Set 컬렉션으로 이루어진 메뉴판에서 컬렉션 타입에 무관하게 반복자를 활용하여, 두 메뉴판에서 비건메뉴를 출력하는 .. 2025. 1. 3.
[타입스크립트로 살펴보는 디자인패턴 9] 템플릿 메서드 패턴 템플릿 메서드 패턴(Template Method Pattern)템플릿 메서드 패턴은 알고리즘의 골격을 정의한다. 템플릿 메서드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 특정 단계를 서브클래스에서 재정의할 수도 있다.템플릿 메서드 패턴은 일련의 단계로 알고리즘을 정의한 메서드이다. 여러 단계 가운데 하나 이상의 단계가 추상 메서드로 정의되며, 그 추상 메서드는 서브클래스에서 구현된다.더불어, 후크(hook)라는 추상 클래스에서 선언되지만 기본적인 내용만 구성되어있거나 아무 코드도 들어있지 않은 메서드를 선택적으로 오버라이드 하여 원하는 기능을 구현할 수도 있다. 이어지는 예시에서 작성된 음료 제조 시스템에서는 첨가물 여부를 입력받는 용도로 사용.. 2024. 12. 30.