Подтвердить что ты не робот

Где находится документация 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".

4b9b3361

Ответ 2

Вы смотрели Введение в Mocking with Moq? Это вводный обзор использования Moq и предназначен для тех, кто новичок или в издевательстве вообще, или в самой структуре Moq.

Ответ 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.