Moq - проверка того, что метод контроллера выдает исключение - PullRequest
2 голосов
/ 15 ноября 2011

У меня есть метод контроллера, который выдает пользовательское исключение, если цикл по списку идентификаторов не находит указанный идентификатор, в противном случае он возвращает частичное представление.

Я сделал тест, чтобы увидетьесли он успешно возвращает частичное представление, но как проверить, что метод завершается ошибкой и что выбрасывается пользовательское исключение?

1 Ответ

10 голосов
/ 15 ноября 2011

Вы можете сделать простую попытку / поймать и выполнить Assert.Fail, если вы не перехватили ожидаемое исключение.Однако большинство структур модульного тестирования предоставляют автоматизированный способ тестирования исключений.

Microsoft MSTest имеет атрибут ExpectedException, который можно применить к методу теста:

[ExpectedException(typeof(ArgumentNullException))]
[TestMethod]
public void DoSomething()
{ ... }

Если тестПриведенный выше метод NOT создает исключение ArgumentNullException, MSTest помечает тест как неудачный.

NUnit имеет более детализированный Assert.Throws, который дает вам более конкретный контроль того, где именно в методе тестаожидается исключение.

...