2008-10-23 3 views
53

Где я могу найти полную документацию для MOQ? Я только начинаю с насмешкой и с трудом обнимаю его. Я прочитал все ссылки по адресу http://code.google.com/p/moq/wiki/QuickStart, но, похоже, не может найти учебник или нежное введение.Где находится документация MOQ?

Я также кратко посмотрел на Носорогов Мокс, но нашел это очень запутанным.


Да - Я читаю статью Стивена Вальтера - очень полезно. Я также просмотрел ссылки. Я не могу смотреть видео на http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [сломанной ссылке]

В частности я пытаюсь определить, был ли поднят событие из издевались класса. Я не могу получить пример для событий на странице QuickStarts для компиляции. В группах google, Daniel объяснил, что 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> потому что я получаю эту ошибку:

Error 1 'CoreServices.Notifier' does not implement interface member System.ComponentModel.INotifyPropertyChanged.PropertyChanged'. 'CoreServices.Notifier.PropertyChanged' cannot implement 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged' because it does not have the matching return type of 'System.ComponentModel.PropertyChangedEventHandler'.

+0

Показанная ошибка - ошибка визуальной студии/компилятора. Просто удалите все из папки bin и перестройте. – CodingBarfield 2012-01-02 14:43:01

+0

Ссылка на * Введение в Mocking с Moq * в моем ответе исправлена. – 2012-04-20 13:32:17

ответ

15

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

1

I am trying to determine whether an event was raised from the mocked class.

Вы? Или вы пытаетесь определить, было ли установлено свойство Id? Помните, что по умолчанию макет не имеет никакого поведения. Это не вызывает уведомления.

Я хотел бы сделать:

const int ExpectedId = 123; 
mockEntity.VerifySet(x => x.Id = ExpectedId); 

Это предполагает, что Entity реализует интерфейс; один пример:

public interface IKeyedEntity 
{ 
    int Id { get; set; } 
} 

Тем не менее, если Entity является POCO, без интересного поведения я бы ни реализовать интерфейс (кроме INotifyChanged), ни издеваться его. Тест с фактическим экземпляром Entity (просто не используйте базу данных). Резервный насмешливый сервис и сложные зависимости.

Для больше функций MOq см

Old style imperative mocks vs moq functional specifications и Mock.Of - how to specify behavior? (thread). Я также разместил свой собственный пример Moq v4 functional specifications.

Смежные вопросы