첫 번째 호출에서 예외를 throw하고 두 번째 호출에서 void를 반환하도록 Moq를 설정하려고합니다. 내가 조롱하는 방법은 void
반환 유형 (예 : public void Bar()
)입니다.Moq의 SetupSequence를 사용하여 예외를 throw 한 다음 void를 반환 할 수 있습니까?
것들 내가
을 시도이 Returns
인수를 필요로하며 SetupSequence
인수를 입력해야하기 때문에 컴파일 오류가 있습니다. Void
는 C#에서 유형이 아니기 때문에
_mock.SetupSequence(m => m.Bar())
.Throws<Exception>()
.Returns();
이 컴파일 오류가 있습니다.
_mock.SetupSequence<IMyMock, Void>(m => m.Bar())
.Throws<Exception>() // first invocation throws exception
.CallBase();
내가 SetupSequence()
에 포기하고 예외를 던질 Callback()
로 전환 결국 해결
.
var firstTime = true;
_mock.Setup(m => m.Bar())
.Callback(() =>
{
if (firstTime)
{
firstTime = false;
throw new Exception();
}
});
질문
SetupSequence
Func
아닌 Action
합니다. 나는 이것이 무효화 방법을 조롱하는 데 사용될 수 없다는 것을 가정 할 때 정확합니까? SetupSequence()
?
필자가 아는 한, 'Setup'은 모든 호출에 대해 동일한 동작을 정의합니다. 모범이 있습니까? –