답변:
부록 : 다른 답변에서 언급했듯이의 목적 .Verifiable
은를 통해 트리거 될 수있는 Setup
"지연된 Verify(...)
통화" 집합 에을 참여시키는 것 mock.Verify()
입니다.
OP의 설명을 통해 이것이 목표 였고 유일한 문제는 작동하지 않는 이유를 파악하는 것이었지만 @Liam이 자극 한 것처럼 대답은 실제로 이것에도 영향을 미쳤습니다 .- 내가 할 수있는 한 주요 사용 사례 참조 :
mock.Setup()
와 사이의 건조도 유지mock.Verify
Verify
호출 자체 에서 확인 구성을 분리 할 수 있도록 허용 (예 : 다른 도우미 메서드에서 설정할 수 있음)... 그리고 내 대답으로 돌아가서 간결하게 효과적으로 "위의 전문가들은 일반적으로 그러한 목표를 달성하는 것이 그러한 구조에 너무 많이 의존하는 테스트의 가독성 및 유지 관리성에 미치는 영향에 의해 더 중요하다고 간주되기 때문에주의하십시오"라고 말합니다.
ORIGINAL : 가능한 경우 대신 AAA 레이아웃을 따라야 하므로 작업이 완료된 후 또는 가능한 한 쌍을 이루는 것보다 명시적인 mock.Verify( expression )
호출을 수행mock.Setup( ... ).Verifiable()
mock.Verify()
mock.VerifyAll()
해야합니다 (크레딧 : @kzu ).
Verifyable()
/ VerifyAll()
모든 경우입니다. 내 현재 단위 테스트에 많은 Setup(...)
호출이 있습니다 (> 30). 관례를 충족시키기 위해 각각을 동등한 Verify ()와 일치시킬 수 있지만 이로 인해 많은 양의 코드 중복이 발생하고 단위 테스트 수가 증가함에 따라 유지 관리 및 읽기가 까다로울 것입니다. 내가 정말로 묻는 것은 많은 설정이 있거나 엄격 Verifiable()
하고 빠른 규칙을 피하는 경우 예외를 만들 수 있습니까?
Setup
와 Verify
, 그 AAA에서 제안하는 방식으로 높은 승리를 달성 할 수있는 유일한 휴식 할 수 건조 제약 강하게 암시 전략의 가족이 없을 수 있습니다