Несмотря на то, что я понял принцип издевок, окурков и абстракции классов для проверяемого дизайна, есть что-то, что до сих пор остается неясным для меня.Как правильно абстрагировать объекты системы при модульном тестировании на C#?
Работая с .NET, существует много встроенных классов, таких как StackTrace, например, в пространстве имен Diagnostics.
Некоторые из этих классов содержат коллекции других классов, и эти классы также содержат другие классы и т. Д. И т. Д. И т. Д. ... - принцип сдерживания.
Например: Класс StackTrace
содержит массив объектов StackFrame
, который сам имеет метод, возвращающий объект MethodBase
.
Скажите, что ни один из этих классов не является абстрактным, что означает, что они не могут быть издевались напрямую. Как можно создать код, чтобы можно было имитировать эти классы, , не создавая тонны классов упаковки и тратя много времени на это?
Надеюсь, я достаточно ясен на этом.
Почему вы хотите, чтобы дразнить 'StackTrace'? Обычно вы mock * services * - не объекты данных, такие как 'StackTrace' и' MethodBase'. (Аналогично, вы не утруждаете насмешливыми коллекциями, строками и т. Д.) –
@JonSkeet Класс 'StackTrace' обладает способностью читать файлы внутри (что является вводом-выводом, поэтому это своего рода сервис), поэтому он имеет для издевательства, чтобы избежать зависимости файловой системы. Пожалуйста, поправьте меня, если я ошибаюсь. –
Только если вы используете этот аспект. –