Как захватить исключение в nSpec
В моем "акте" я хочу зафиксировать исключение, чтобы можно было выполнить несколько тестов для данных об исключении. Примеры в Интернете показывают, как захватить и сравнить тип / сообщение в тесте (или блоке "Это"), но не как захватить исключение как "действие" само по себе.
В настоящее время я просто делаю try/catch внутри тела 'act' и сохраняю исключение в контексте для последующего тестирования в блоке 'It'. Там я могу выполнить ряд различных беглых утверждений в отношении данных. Это лучший подход?
3 ответа
На самом деле, есть действительно лучший способ сделать это:
void describe_some_exceptional_behavior()
{
context["when throwing an exception"] = () =>
{
act = () => throw new InvalidOperationException();
it["should raise the exception"] = expect<InvalidOperationException>();
};
}
Примечание: вы назначаете результат expect
прямо к it
, Это сбило меня с толку в первый раз.
Посмотрите спецификации nspec для большего количества примеров.
Если вы хотите использовать среду с открытым исходным кодом, вы можете использовать Fluent Assertions и сделать это:
Действие act = () => subject.Foo2 ("Hello");
act.ShouldThrow ().WithInnerException ().WithInnerMessage ("что угодно");
Я не думаю, что в настоящее время есть другой способ добиться этого, кроме блоков try try catch для хранения исключения и последующей проверки его в блоке it.