Как захватить исключение в 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.

Другие вопросы по тегам