2016-08-16 4 views
1

Я только что обновил свой старый проект, чтобы использовать версию 4.13.0, и была проведена большая проверка исключения с ComparisonMode.Substring, но ComparisonMode.Substring не существует в новейшей версии. Я обнаружил, что this объясняет, что:FluentAssertions терпит неудачу при сравнении сообщений об исключениях

В результате этого, я решил, что в версии 2.1, ComparisonMode является устаревшим и любые утверждения в отношении сообщения исключений рассматривается как регистронезависимом матч группового символа.

Но теперь я получаю кучу неудачных испытаний с:

Ожидаемого сообщение об исключении в соответствии с эквивалентом «Значение аргумента„PeriodEnd“должно быть больше, чем '01 .01.0001' », но "Значение аргумента 'PeriodEnd' должно быть больше, чем '01 .01.0001'

имя параметра Значение '01 .01.0001.:. PeriodEnd" нет.

струна Я утверждаю с

Значение аргумента 'PeriodEnd' должно быть больше, чем '01 .01.0001'

Один ожидает

Значение аргумента 'PeriodEnd' должен быть больше, чем '01 .01.0001 '. Значение равно '01 .01.0001 '.

Имя параметра: PeriodEnd

Но от «патч-ноты» от прежде, чем это кажется, что это должно быть подстановочные и струна я утверждаю от подстрока одна она на самом деле, так почему это не так?

ответ

2

Вам все равно нужно добавить символы подстановки к вызову WithMessage, как и вы, когда ComparisonMode.Wildcard все еще существует. Обоснование объясняется в this post:

Если вам нужно убедиться, что определенное строковое значение или сообщение об исключении соответствует ожиданию, никогда не проверяйте точное сообщение. Используйте подстановочные знаки для проверки определенных частей, которые имеют отношение к проверке того, что поведение соответствует ожидаемому. Это избавит вас от непредсказуемо неудачных тестов, если вы решите усовершенствовать текст.

+0

Есть ли место с информацией о разных символах подстановки? – Mech0z

+0

См. Https://github.com/dennisdoomen/FluentAssertions/wiki#exceptions. Но, короче говоря, поддерживаются только '?' И '*'. –

Смежные вопросы