Самая популярная и дружелюбная насмешливая библиотека для .net
var mock = new Mock <Ilovethislibrary> (); // УХ ТЫ! Нет записи/воспроизведения странности?! :) mock.setup (library => library.downloadexists ("2.0.0.0")). Returns (true); // Используйте свойство объекта на макете, чтобы получить ссылку на объект // внедрение Ilovethislibrary, а затем управляйте ее, позвонив // методы на нем Ilovethislibrary overble = mock.object; Bool Download = viopable.downloadexists ("2.0.0.0"); // Убедитесь, что заданный метод действительно был вызван с ожидаемым значением не более одного mock.verify (library => library.downloadexists ("2.0.0.0"), times.altoNce ());
MOQ также является первой и единственной библиотекой до сих пор, чтобы предоставить LINQ для насмешек, так что одно и то же поведение выше может быть достигнуто гораздо более кратко:
Ilovethislibrary overble = mock.of <ilovethislibrary> (l => l.downloadexists ("2.0.0.0") == true); // Использование экземпляра, возвращаемого Mock.of, вызывая методы ... Bool Download = viopable.downloadexists ("2.0.0.0"); // просто утверждайте возвращенное состояние: Assert.true (скачать); // Если вы хотите выйти за рамки государственного тестирования и хотите // вместо этого проверяйте фиктивное взаимодействие ... Mock.get (viofable) .verify (library => library.downloadexists ("2.0.0.0"));
Вы можете думать, что LINQ насмехается как о «из вселенной макетов, дайте мне одно, чье поведение соответствует этому выражению».
Проверьте QuickStart для получения дополнительных примеров!
MOQ (произносится как «Mock-you» или просто «Mock»)-единственная насмешняя библиотека для .NET, разработанная с нуля, чтобы в полной мере воспользоваться преимуществами выражений .NET LINQ Expression Trees и Lambda Expressions, что делает его наиболее продуктивным, безопасным для типа и Доступна рефакторинговая библиотека. И он поддерживает насмешливые интерфейсы, а также классы. Его API чрезвычайно прост и прост, и не требует никаких предварительных знаний или опыта с насмешливыми понятиями.
Библиотека была создана главным образом для разработчиков, которые в настоящее время не используют какую -либо издевательную библиотеку (или недовольны сложностями какой -либо другой реализации), и которые обычно вручную пишут свои собственные макеты (с более или менее «фантазией»). Большинство разработчиков в этой ситуации также оказываются довольно прагматичными и придерживаются заявления (или классического) TDD. Это результат ощущения, что барьер въезда из других насмешливых библиотек немного высок, и возможны более простой, более легкий и элегантный подход. MOQ достигает всего этого, в полной мере используя элегантные и компактные языковые функции C# и VB, коллективно известные как LINQ (они не только для запросов, как следует из аббревиатуры).
MOQ предназначен для того, чтобы быть очень практичным, ненавязчивым и простым способом быстрого настройки зависимостей для ваших тестов. Его дизайн API помогает даже начинающим пользователям попасть в «яму успеха» и избегать наиболее распространенных неправильных употреблений/злоупотреблений насмешкой.
Когда это было задумано, это была единственная насмешливая библиотека, которая противоречила обобщенной и несколько неинтуитивной (особенно для новичков) подхода к записи/воспроизведения из всех других библиотек (и это могло быть хорошо;)).
Не использование записи/воспроизведения также означает, что легко перемещать общие ожидания в метод настройки приспособления и даже переопределять эти ожидания при необходимости в конкретном модульном тесте.
Вы можете прочитать больше о «почему» и увидеть несколько хороших скриншотов в блоге KZU.
Посмотрите наши примеры QuickStart, чтобы почувствовать чрезвычайно простой API и установите из Nuget.
Прочитайте об объявлении в блоге KZU. Получите некоторое предысторие о состоянии макетных библиотек от Скотта Хансельмана.
MOQ был первоначально разработан Клариусом, Манасом и Instedd.
MOQ использует DynamicProxy Castle Interdly в качестве механизма перехвата, позволяющего насмехаться.
MOQ предлагает следующие функции:
Сильный тип: никаких строк для ожиданий, никаких возвратных значений или ограничений типа объекта или ограничений
Непревзойденная интеграция Intellisense: все поддерживает полный против Intellisense, от установки ожиданий до определения аргументов вызова метода, возвращаемых значений и т. Д.
Нет записи/воспроизведения идиомов для изучения. Просто постройте свой макет, установите, используйте его и, необязательно проверить его (вы можете не проверять макет, когда они действуют только как заглушки, или когда вы выполняете больше классического тестирования на основе состояний, проверяя возвращаемые значения из тестирования объекта. )
Очень низкая кривая обучения в результате предыдущих трех пунктов. По большей части вам даже не нужно читать документацию.
Гранулированный контроль над наддежным поведением с помощью простого перечисления макбевовника (не нужно изучать теоретическое различие между макетом, заглушкой, фальшивой, динамичной макетом и т. Д.)
Высмеивать как интерфейсы, так и классы
Переопределить ожидания: может установить ожидания по умолчанию в настройке приспособления и переопределить по мере необходимости на тестах
Передайте аргументы конструктора для высмеиваемых классов
Перехватить и повышать события на макетах
Интуитивная поддержка аргументов out/ref
Мы глубоко ценим любые отзывы, которые у вас могут иметь! Не стесняйтесь принять участие в чате или сообщать о проблеме в The The Change Tracker.
Узнайте больше о спонсорах GitHub