NUnit и NSubstitute не могут правильно перехватить исключение в unittest - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть unittest с использованием NUnit и NSubtitute с кодом:

client.Read(Arg.Any<DATA>()).Throws(new Exception());

var response = service.Read()

service.Read () выглядит так:

try
{
   var clientRead = client.Read();
}
catch (Exception ex)
{
   throw MessageException(ex);
}

Когда выполняется service.Read () он вызовет client.Read (), а затем go, чтобы поймать service.Read (). Однако в этот момент юнит-тест останавливается из-за системного исключения, и мой юнит-тест останавливается. Как я могу «поймать» эту проблему и продолжить мой юнит-тест?

1 Ответ

1 голос
/ 17 апреля 2020

Перехватите выброшенное исключение и подтвердите ожидаемое поведение

Например, Вы можете использовать Assert.Throws<TException>

//...

client.Read(Arg.Any<DATA>()).Throws(new Exception());

//Act
Action act = () => var response = service.Read();

//Assert
MessageException ex = Assert.Throws<MessageException>(act);
//...assert the exception for expected behavior
...