[테스트 주도 개발] 7장_사과와 오렌지

제목 의미 : 서로 다른걸 비교할 수 없다.

Franc 와 Dollar 를 비교하면 어떻게 될까 ?

1
2
3
4
5
6
7
8
@Test
void testEquality() {
assertTrue(new Dollar(5).equals(new Dollar(5)));
assertFalse(new Dollar(5).equals(new Dollar(6)));
assertTrue(new Franc(5).equals(new Franc(5)));
assertFalse(new Franc(5).equals(new Franc(6)));
assertFalse(new Franc(5).equals(new Dollar(5)));
}

실패한다. 오직 금액과 클래스가 동일할 때만 두 Money 가 서로 같은 것이다.

1
2
3
4
5
public boolean equals(Object object) {
Money money = (Money) object;

return amount == money.amount && getClass().equals(money.getClass());
}

자바 객체의 용어를 사용하는 것보다 재정 분야에 맞는 용어를 사용하고 싶다. currency 통화 개념 같은 게 없고, 통화 개념을 도입할 충분한 이유가 없으므로 잠시 이렇게 두자.


테스트 주도 개발 <켄트 벡>

Comments