Где находится документация MOQ?
Где я могу найти исчерпывающую документацию для MOQ? Я только начинаю с насмешкой и с трудом обнимаю его. Я прочитал все ссылки в http://code.google.com/p/moq/wiki/QuickStart, но, похоже, не может найти учебник или нежное введение.
Я также кратко посмотрел на Rhino Mocks, но нашел это очень запутанным.
Да. Я читаю статью Стивена Вальтера - очень полезно. Я также просмотрел ссылки. Я не могу смотреть видео в http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [неработающая ссылка]
В частности, я пытаюсь определить, было ли событие возбуждено из издевающегося класса. Я не могу получить пример для событий на странице QuickStarts для компиляции. В группах google Даниэль объяснил, что CreateEventHandler может обрабатывать событие типа EventHandler<TEventArgs>
, но даже тогда я не могу его скомпилировать.
В частности, у меня есть класс, который реализует INotifyChanged
.
public class Entity : INotifyChanged
{
public event PropertyChangingEventHandler PropertyChanging;
public int Id
{
get {return _id;}
set {
_id = value;
OnPropertyChanged("Id");
}
}
protected void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
etc .....
}
Как мне высмеять класс, чтобы проверить, было ли запущено событие PropertyChanged
? Я не могу переписать событие на public event EventHandler<PropertyChangedEventArgs>
, потому что получаю эту ошибку:
Ошибка 1 'CoreServices.Notifier' не реализует член интерфейса System.ComponentModel.INotifyPropertyChanged.PropertyChanged '. "CoreServices.Notifier.PropertyChanged" не может реализовать "System.ComponentModel.INotifyPropertyChanged.PropertyChanged", потому что у него нет соответствующего типа возврата "System.ComponentModel.PropertyChangedEventHandler".
Ответы
Ответ 1
Последняя документация Moq теперь доступна на странице вики-страницы github:
https://github.com/Moq/moq4/wiki/Quickstart
Раньше они были в Google Code. Помимо вики и других онлайн-ресурсов, имеется полная документация в формате файла .CHM в формате Moq binary download, связанная с домашняя страница Moq.
Ответ 2
Вы смотрели Введение в Mocking with Moq? Это вводный обзор использования Moq и предназначен для тех, кто новичок или в издевательстве вообще, или в самой структуре Moq.
Ответ 3
Вы читали связанные страницы в https://github.com/Moq/moq4/wiki/Quickstart?
например этот (возможно, переместился в персональный блог stephen walthers)
Ответ 4
Я пытаюсь определить, было ли событие возбуждено из издевательства класс.
Вы? Или вы пытаетесь определить, было ли установлено свойство Id
? Помните, что по умолчанию макет не имеет никакого поведения. Это не увеличивает уведомления о событиях.
Я бы сделал:
const int ExpectedId = 123;
mockEntity.VerifySet(x => x.Id = ExpectedId);
Это предполагает, что Entity реализует интерфейс; один пример:
public interface IKeyedEntity
{
int Id { get; set; }
}
Тем не менее, если Entity
является POCO без какого-либо интересного поведения, я бы ни реализовал интерфейс (кроме INotifyChanged
), ни издеваться над ним. Тест с фактическим экземпляром Entity
(просто не используйте базу данных). Резервный насмешливый сервис и сложные зависимости.
Дополнительные функции Moq см. в
Старые стилистические требования к мошенникам и функциональным функциям moq
а также
Mock.Of - как указать поведение? (Резьба). Я также разместил собственный пример функциональных спецификаций Moq v4.