Я понимаю, что структура MOQ на самом деле не была предназначена для помощи в этом случае, но, возможно, вы могли бы помочь ...NUnit & MOQ: Тестирование попытки поймать, что вызывает другой метод, когда исключение исключено
У меня есть метод, который использует try/catch, который вызывает метод уведомления всякий раз, когда генерируется исключение. То, что я пытаюсь сделать, это создать интеграционный/модульный тест, который проверяет, будет ли вызываться SendNotification при вызове любого исключения.
Метод проверяемого:
public virtual void MonitorIntradayBuilds(IIntradayBuilds intradayBuilds)
{
try
{
var intradayBuildFound = intradayBuilds.CheckForIntradayBuilds();
if (intradayBuildFound && !IntradayBuildsComplete && !DailyBuildsFound)
{
IntradayBuildsComplete = intradayBuilds.StartIntradayBuilds();
//should start daily builds?
}
}
catch (Exception ex)
{
SendNotification("MonitorIntradayBuilds threw an exception", ex);
}
}
Test Case:
[Test]
public void it_should_notify_developers_immediately_if_there_is_a_problem_when_checking_for_intraday_builds()
{
//Arrange
var mockDua = new Mock<DUA>();
var mockIB = new Mock<IIntradayBuilds>();
//Act
mockIB.Setup(x => x.CheckForIntradayBuilds()).Throws(new Exception());
mockDua.Object.MonitorIntradayBuilds(mockIB.Object);
//Assert
mockDua.Verify(x => x.SendNotification(It.IsAny<string>(), It.IsAny<Exception>()), Times.Once);
}
Я продолжаю ударять Moq.MockException, а затем посмотреть, что SendNotification «ожидал вызова на издеваться один раз, но был 0 раз ... "
Я попытался использовать атрибут [ExpectedException] в тестовом примере, но безрезультатно. Он пропускает тест, но не вызывает метод SendNotification.
Любые идеи?