의 목적은 Verifiable()
무엇입니까?
a를 확인하고 Mock
이것을 생략해도 SetUp
.
편집 : 나는 VerifyAll()
모든 것이 확인되는 이유를 사용 하고 있었습니다 . Verify()
내 .Verifiable()
SetUp
s로 변경 한 후 확인되었습니다.
답변
부록 : 다른 답변에서 언급했듯이의 목적 .Verifiable
은를 통해 트리거 될 수있는 Setup
“지연된 Verify(...)
통화” 집합 에을 참여시키는 것 mock.Verify()
입니다.
OP의 설명을 통해 이것이 목표 였고 유일한 문제는 작동하지 않는 이유를 파악하는 것이었지만 @Liam이 자극 한 것처럼 대답은 실제로 이것에도 영향을 미쳤습니다 .- 내가 할 수있는 한 주요 사용 사례 참조 :
- a
mock.Setup()
와 사이의 건조도 유지mock.Verify
- 실제
Verify
호출 자체 에서 확인 구성을 분리 할 수 있도록 허용 (예 : 다른 도우미 메서드에서 설정할 수 있음)
… 그리고 내 대답으로 돌아가서 간결하게 효과적으로 “위의 전문가들은 일반적으로 그러한 목표를 달성하는 것이 그러한 구조에 너무 많이 의존하는 테스트의 가독성 및 유지 관리성에 미치는 영향에 의해 더 중요하다고 간주되기 때문에주의하십시오”라고 말합니다.
ORIGINAL : 가능한 경우 대신 AAA 레이아웃을 따라야 하므로 작업이 완료된 후 또는 가능한 한 쌍을 이루는 것보다 명시적인 mock.Verify( expression )
호출을 수행mock.Setup( ... ).Verifiable()
mock.Verify()
mock.VerifyAll()
해야합니다 (크레딧 : @kzu ).
답변
Verify()
테스트가 끝날 때 메서드가 호출 될 때 확인 가능으로 표시된 기대 값이 호출되지 않은 경우 예외는 thrown
.
VerifyAll()
검증 가능한 기대치를 확인하지 않습니다.