에 나는 그것이 평등 구현을 그리워 쉽게 많은 특성을 가진 복잡한 객체가있는 경우 신속 객체Equatable 테스트 스위프트
의 평등을 테스트하는 모범 사례에 대한 제안을 찾고 있어요.
평등 구현을 시행하는 좋은 방법은 무엇입니까?
자세한 내용 : 물론 , 당신은 때 그들이해야 두 값이 동일한 지 확인하기 위해 테스트를 작성할 수 있지만, 문제는 여기이 쉽게 깰 수 있다는 것입니다. 프로젝트에 구조체가 있습니다. 6 개월 후에 다른 개발자가 해당 구조체에 속성을 추가합니다. 그는 동등성에 속성을 추가하는 것을 잊었다 고 가정합니다. 평등은 여전히 작동하지만 테스트는 통과하지만 해당 속성 만 변경되면 앱이 중단됩니다. 내 질문은,이 문제를 피할 수있는 방법이 있습니까?
평범하지 않은 응용 프로그램에서는 실제로 10 개의 값을 가진 모델 객체가 있고 결국 중첩 된 모델 객체를 사용하기 쉽습니다. 그렇다면 어떻게하면 내 모델 객체의 평등성을 제어 할 수 있을까요? 평등 구현에서 인간의 실수 위험을 줄이려면 어떻게해야합니까?
가능한 해결 방법 : 내가 생각하고있는 하나의 솔루션은 모든 클래스/구조체를 들어 특정 프로토콜
Diffable : Equatable {}
을 준수 클래스와 구조체에 대한 컴파일시에 보이는 스크립트를 작성하는 것입니다 내가 테스트 클래스 Foo_Tests_Diffable
Foo
를 들어
: 나는 테스트 파일의 실존을 확인합니다 Diffable
, 즉 채택 다음 이름 패턴에 부합 내가 테스트 함수의 실존을 확인합니다 Foo
내부의 모든 속성보다
test<property name>Diffable
예 :
class Foo : Diffable {
var title: String
var color: UIColor
var tag: Tag
}
내가 확인합니다
다음 내부 시험 Foo_Tests_Diffable
func testTitleDiffable {
// Test
}
func testColorDiffable {
// Test
}
func testTagDiffable {
// Test
}
모든 스크립트 핀 DS 컴파일 단계 패스보다 모든 예상 시험은, 그렇지 않으면
실패하지만 그래서 어떤 제안을 환영합니다
글쎄, 당신이 바로, 테스트를 추가하고 그 이유는? ;) 모든 필드가 같을 때 동등한 것으로 간주되어야한다면'struct'로 선언하는 것이 좋습니다. – redent84
물론 두 값이 같아야한다는 것을 확인하기위한 테스트를 작성할 수는 있지만 문제는 쉽게 깨질 수 있다는 것입니다. 프로젝트에 구조체가 있습니다. 6 개월 후에 다른 개발자가 해당 구조체에 속성을 추가합니다. 그는 평등에 속성을 추가하는 것을 잊어 버린다고 가정합니다. 평등은 여전히 작동하지만 테스트는 통과하지만 해당 속성 만 변경되면 앱이 중단됩니다. 내 질문에이 문제를 방지 할 수있는 방법이 있습니까? –
질문 제목과 본문을 확장하여 의견을 고려하십시오. 웬일인지 그 의견은 나에게 숨겨져 있었고 나는 당신에게 거의 사용하지 않는 대답을 썼다. – CloakedEddy