단위 테스트를 위해 예측 가능성이 높은 Arrange Act Assert format을 선호합니다. 키위는 모의 객체에 대한 명시 적으로 확인 문이 없기 때문에키위 모크에서 확인 방법이 부족한 경우 해결 방법이 있습니까?
, 그것은 다른 패턴을 강제로 뭔가 같은 :
// Arrange
Thing *mockThing = [CollaboratingClass mock];
TestedClass *sut = [[TestedClass alloc] initWithCollaborator:mockThing];
// Expect (collaboration expectations)
[[[mockThing should] receive] someMessage];
// Act
[mockArray someMethodInvolvingCollaborator];
// Assert (state expectations)
[[sut.someProperty should] equal:someValue];
나는 검증 어쨌든 일어나는 것을 알고 있지만, 신속하게 테스트를 스캔 할 수있는 선호 주장과 기대가 하나의 예측 가능한 장소에 함께 있습니다. 이는 mockito (및 Objective-C 구현 OCMockito)에 의해 올바르게 활성화됩니다. 여기서 확인 단계에서는 메서드 호출을 임시 지정하여 이전 예상 단계를 필요로하지 않습니다.
저는 상대 키위녀입니다. 따라서 문서에서 뭔가를 놓친 것 같습니다. 명시 적으로 키위 모의를 확인하는 방법이 있습니까?
사려 깊은 반응에 감사드립니다. 필자의 예는 논리적으로 두 가지 별도의 테스트라고 전적으로 동의합니다. 그러나 나는 키위 접근 방식의 장점에 대해서는 여기 팔리지 않았다.그것은 테스트의 실제 고기 (기대/주장)가 다르게 배치되어있는 협업 테스트와 다른 패턴 (AEA 대 AAA)을 가진 상태 별 테스트를 초래합니다. 그것은 빠른 스캐닝에 비합리적입니다. 확인 단계는 OCMock을 사용하여 중복 될 수 있지만 OCMockito와는 중복 될 수 있습니다. OCMockito는 내가 생각하기에 가장 좋은 전반적인 패턴을 생생하게 나타냅니다. (명확히하기 위해 질문을 편집 할 것입니다.) – Cris
왜 대답을했는지에 대해 받아 들였습니다 '아니오'(이는 어떤 질문에 대해서도 완벽하게 좋은 답변 임)입니다. 나는 키위의 접근 방식을 여전히 좋아하지 않는다. 그러나 그것은 단지 맛이다. – Cris
답변을 수락 해 주셔서 감사합니다. 나는 최근에 이것에 대해 조금 생각해 왔고, 가장 좋은 접근법이 무엇인지 궁금해했습니다. 키위가 어느 쪽인가의 접근을 허용했다면 확실히 좋을 것이고 필요하다면 사후 정당화를 통해 명시 적으로 검증하게 할 것이다. –