을 남겨 : 나는 방법 age
을 테스트하려는 경우 지금고려 예 통과 매개 변수
case class Home(description: String)
case class Person(age: Int, race: String, home: Home)
def age(p: Person): Person = {
val newAge = p.age + 1
p.copy(age = newAge, home = if (newAge == 18) Home("Under the bridge") else p.home)
}
it("Should move on 18th birthday") {
val person18yrs = age(Person(17, "Caucasian", Home("With parents")))
person18yrs shouldBe Person(18, "Caucasian", Home("Under the bridge"))
}
을, 나는 그것을 기반으로 person
객체를 차별하지 않습니다 age
방법은 비록 분야 race
를 작성해야 경주. 그것은 오직 통과 매개 변수입니다. 이 간단한 예제에서 그렇게 많은 작업은 아니지만 20 필드 클래스 계층 구조에서 두 필드로 작업 할 때 나는 행복하지 않습니다. 그리고 저는 행복하게 지내고 싶습니다. 그래서 몇 가지 해결책을 찾기 시작합니다.
하나의 해결책은 빈 필드를 Null로 채울 수 있습니다. 하지만 단점은 내가 구현을 변경하면 테스트 클래스 컴파일 오류를 테스트 실패로 변환한다는 것입니다. 그리고 나는 여전히이 null을 쓸 필요가있다.
다른 솔루션은 메소드를 작성하여 상호 작용하는 매개 변수를 승인하고 리턴 할 수 있습니다. 단점은 이름이 부족한 튜플을 반환해야하거나 메서드 매개 변수와 반환 형식을 캡슐화하는 일부 클래스를 만들어야한다는 것입니다.
또는 어쩌면 stackoverflow의 현명한 사람들은 내 지능의 반맹 눈으로 볼 수없는 다른 해결책이있을 수 있습니다. :-)