У меня есть опыт работы в разработке на C ++ / non-.NET, и я в последнее время больше увлекаюсь .NET, поэтому у меня были определенные ожидания, когда я впервые использовал Moq.Я пытался понять, что WTF идет с моим тестом, и почему код, который я тестировал, выдавал случайное исключение вместо библиотеки Mock, сообщающей мне, какую функцию пытается вызвать код.Итак, я обнаружил, что мне нужно включить строжайшее поведение, которое вызывает недоумение, и затем я наткнулся на этот вопрос, который, как я видел, пока не получил ответа.
Свободный *Режим 1006 * и тот факт, что это значение по умолчанию , является безумным .Какова цель библиотеки Mock, которая делает что-то совершенно непредсказуемое, что вы не указали явно, что она должна делать?
Я полностью не согласен с пунктами, перечисленными в других ответах в поддержку режима Loose.Нет веских причин использовать его, и я бы никогда не захотел.При написании модульного теста я хочу быть уверенным в том, что происходит - если я знаю, что функция должна вернуть ноль, я заставлю ее вернуть это.Я хочу, чтобы мои тесты были хрупкими (в том смысле, в каком они важны), чтобы я мог их исправить и добавить к набору тестового кода строки установки, представляющие собой явную информацию, которая точно описывает, что будет делать мое программное обеспечение.
Вопрос в том - существует ли стандартный и нормальный способ сделать это?
Да - с точки зрения программирования в целом, то есть других языков и за пределами мира .NET, вы должны использоватьСтрогий всегда.Боже мой знает, почему это не по умолчанию в Moq.