FakeItEasy를 사용하면 통화가 어떻게 발생했는지 주장하는 방법은 무엇입니까?FakeItEasy로 전화를 선택하는 법
사용 사례는 저장소와 함께 작동하는 클래스를 작성 중이며 메소드의 결과로 클래스는 DeleteAll을 호출하거나 Delete를 모두 호출하여 저장소에서 일부 요소를 제거해야합니다 .
는 지금,이 같은 시도 - 캐치를 사용했습니다 :
try // either
{
A.CallTo(() => module.CardRepo.Delete(A<CardData>.That.IsEqualTo(dummy.CardData[0]))).MustHaveHappened();
A.CallTo(() => module.CardRepo.Delete(A<CardData>.That.IsEqualTo(dummy.CardData[1]))).MustHaveHappened();
}
catch (ExpectationException) // or
{
A.CallTo(() => module.CardRepo.DeleteAll(A<IEnumerable<CardData>>.That.Contains(dummy.CardData[0]))).MustHaveHappened();
A.CallTo(() => module.CardRepo.DeleteAll(A<IEnumerable<CardData>>.That.Contains(dummy.CardData[1]))).MustHaveHappened();
}
하지만 난 그렇게하지 않고 더 많은 선택을 위해 신속 정말 추한 될 것입니다. 더 좋은 방법이 있습니까? FakeItEasy wiki에서 아무 것도 찾을 수 없습니다.
+1 의견이 나에게 맞는 것처럼 보입니다. 테스트중인 메소드는 알려진 입력 세트를 기반으로 결정 론적으로 작동해야합니다. 나는 네가 왜 이런 상황에 처하게되었는지 상상하고있다. 아마도 테스트는 예측할 수없는 시작 상태에있는 실제 데이터베이스에서 입력이 오는 기능 테스트 일 것입니다. 왜 어떤 방법이 호출 될지 알지 못했을까요? 아마도 같은 테스트가 두 개 이상의 클래스에 사용되고있을 것입니다. 어느 쪽이든, 단일 방법만을 테스트하고 알려진 시작 조건을 가진 컨텍스트를 만드는보다 집중된 단위 테스트가 필요한 것처럼 보입니다. –