여기에 좋은 답변이 많이 있습니다! 종속성에 전달 된 여러 클래스 매개 변수에 대한 어설 션을 작성해야 할 때까지 즉시 사용 가능한 Moq 기능 세트를 사용하십시오. 그 상황에서 Moq Verify 기능을 사용하면 Matcher는 테스트 실패를 격리하는 데 효과적이지 않으며 인수를 반환하는 콜백 / 반환 방식은 테스트에 불필요한 코드 줄을 추가합니다. 긴 테스트는 절망적입니다).
다음은 요지이다 https://gist.github.com/Jacob-McKay/8b8d41ebb9565f5fca23654fd944ac6b 나는 그 언급 한 단점없이, 모의 객체에 전달 된 인수에 대한 주장을 만들 수있는 더 선언적 방법을 제공 쓴 MOQ (4.12) 확장자가. 확인 섹션은 다음과 같습니다.
mockDependency
.CheckMethodWasCalledOnce(nameof(IExampleDependency.PersistThings))
.WithArg<InThing2>(inThing2 =>
{
Assert.Equal("Input Data with Important additional data", inThing2.Prop1);
Assert.Equal("I need a trim", inThing2.Prop2);
})
.AndArg<InThing3>(inThing3 =>
{
Assert.Equal("Important Default Value", inThing3.Prop1);
Assert.Equal("I NEED TO BE UPPER CASED", inThing3.Prop2);
});
Moq가 선언적이며 실패 분리를 제공하면서 동일한 것을 달성하는 기능을 제공했다면 나는 좌절했을 것입니다. 손가락이 넘어졌다!