1부 16장 드디어, 추상화

Expression.plus를 끝내려면 Sum.plus()를 구현해야 한다. 그리고 Exprssion.times()를 구현하면 전체 예제가 끝난다.

Sum.plus()에 대한 테스트를 작성하자.

@Test
    public void testSumPlusMoney() {
        Expression fiveBucks = Money.dollar(5);
        Expression tenFrancs = Money.franc(10);
        Bank bank = new Bank();
        bank.addRate("CHF", "USD", 2);
        Expression sum = new Sum(fiveBucks, tenFrancs).plus(fiveBucks);
        Money result = bank.reduce(sum, "USD");
        assertEquals(Money.dollar(15), result);
    }

Sum 클래스도 수정하자.

// Sum
 public Expression plus(Expression addend) {
        return new Sum(this, addend);
    }
    
@Test
    public void testSumPlusMoney() {
        Expression fiveBucks = Money.dollar(5);
        Expression tenFrancs = Money.franc(10);
        Bank bank = new Bank();
        bank.addRate("CHF", "USD", 2);
        Expression sum = new Sum(fiveBucks, tenFrancs).times(2);
        Money result = bank.reduce(sum, "USD", bank);
        assertEquals(Money.dollar(20), result);
    }

지금가지 우리는

  • 미래에 코드를 읽은 다른 사람들을 염두에 둔 테스트를 작성했다.
  • TDD와 여러분의 현재 개발 스타일을 비교해 볼 수 있는 실험 방법을 제시했다.
  • 또 한 번 선언부에 대한 수정이 시스템 나머지 부분으로 번져갔고, 문제를 고치기 위해 컴파일러의 조언을 따랐다.
  • 잠시 실험을 시도했는데, 되지 않아서 버렸다.

좋은 웹페이지 즐겨찾기