[moq] Moq에서 Verifiable ()의 목적은 무엇입니까?

의 목적은 Verifiable()무엇입니까?

a를 확인하고 Mock이것을 생략해도 SetUp.

편집 : 나는 VerifyAll()모든 것이 확인되는 이유를 사용 하고 있었습니다 . Verify().Verifiable() SetUps로 변경 한 후 확인되었습니다.



답변

부록 : 다른 답변에서 언급했듯이의 목적 .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() 검증 가능한 기대치를 확인하지 않습니다.


답변