본문 바로가기
etc/TDD

켄트백의 TDD 2회차 스터디 6장-10장(~107p)

by 빠니몽 2023. 6. 8.

2023.06.07

1. 팩토리 메서드

생성패턴의 한 종류이다. 특징은 다음과 같다

  1. 1. 확장시 코드 수정 없이 객체(프로덕트)를 추가할 수 있음
  2. 객체 생성시 서브클래스가 어느 클래스의 인스턴스를 만들지 결정
  3. 인스턴스 생성을 서브클래스에 위임

 

전에 진행한 디자인패턴 스터디를 나중에 이 블로그에 정리할 예정이므로, 좋은 예제코드가 있는 블로그 하나만 첨부하겠음

https://bcp0109.tistory.com/367

2. 자바스크립트로 쓰는 테스트코드

2-1. 초기 코드

class Dollar {
  #amount;

  equals(object) {
    const dollar = new Dollar(object);
    return amount == dollar.amount;
  }
}

class Franc {
  #amount;

  equals(object) {
    const franc= new Franc(object);
    return amount == franc.amount;
  }
}

2-2. 테스트코드

describe('Equality Test', () => {
  it('같은 값이면 true, 다른 값이면 false를 반환해야 한다.', () => {
    expect(new Dollar(5).equals(new Dollar(5)).toBe(true);
    expect(new Dollar(5).equals(new Dollar(6)).toBe(false);
    expect(new Franc(5).equals(new Franc(5)).toBe(true);
    expect(new Franc(5).equals(new Franc(6)).toBe(false);
  });
});

2-3. 리팩토링

class Money {
  amount; // protected가 없어서 public으로 전환. private이면 하위 클래스 접근 불가능

  equals(object) {
    const money = new Money(object);
    return amount == money.amount;
  }
}

class Dollar extends Money {
}

class Franc extends Money {
}

 

3. 필요한 것 같은 테스트?

이 책을 읽다가 "필요할 것 같은 테스트코드 작성" 이라는 내용이 나왔다. 읽을 당시에는 그런 테스트코드는 뭘까?라고 생각했는데, 지금 생각해보니 너무 당연하게도 딱 떨어지게 정의할 수는 없다. 개발자마다, 프로젝트마다 상황이 모두 다르기 때문이다. 그러나 이렇게 지나치기에는 아쉬워 어떤 것들을 테스트코드 작성하는지 정리해보고 마무리하겠다.

  1. 기능 테스트: 소프트웨어의 각 기능이 예상대로 작동하는지 확인. 예를 들어, 사용자가 로그인 버튼을 클릭하면 로그인 페이지로 이동하는지 확인하는 테스트가 있을 수 있습니다.
  2. 경계 값 테스트: 소프트웨어가 특정 범위의 값에 대해 제대로 작동하는지 확인합니다. 예를 들어, 숫자를 입력 받는 필드가 0에서 100 사이의 값만 허용하는 경우, 0과 100, 그리고 그 경계를 넘어서는 값(-1, 101 등)에 대한 테스트를 해야 합니다.
  3. 예외 처리 테스트: 예상치 못한 입력이나 상황에 대해 소프트웨어가 적절히 대응하는지 확인합니다. 예를 들어, 사용자가 잘못된 형식의 이메일 주소를 입력했을 때 적절한 오류 메시지를 보여주는지 확인하는 테스트가 있을 수 있습니다.
  4. 성능 테스트: 소프트웨어가 큰 데이터 세트나 많은 사용자 요청을 처리할 수 있는지 확인합니다.
  5. 회귀 테스트: 코드 변경 후에도 기존 기능이 계속 잘 작동하는지 확인합니다.