64

我在哪里可以找到 MOQ 的综合文档?我刚开始嘲笑,我很难理解它。我已经阅读了http://code.google.com/p/moq/wiki/QuickStart上的所有链接,但似乎找不到教程或温和的介绍。

我还简要地查看了 Rhino Mocks,但发现它非常令人困惑。


是的 - 我读过 Stephen Walthers 的文章 - 非常有帮助。我也浏览了链接。我似乎无法在http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq 观看视频[断开链接]

具体来说,我试图确定是否从模拟类中引发了一个事件。我无法编译 QuickStarts 页面上的事件示例。在 google 组中,Daniel 解释说 CreateEventHandler 只能处理 type 的事件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”的匹配返回类型。

4

4 回答 4

35

Moq 的最新文档现在可以在 github wiki 页面上找到:

https://github.com/Moq/moq4/wiki/Quickstart

以前他们在谷歌代码上。除 wiki 和其他在线资源外,还有 Windows .CHM 帮助文件格式的完整文档,包含在从Moq 主页链接的Moq 二进制下载中。

于 2008-11-09T19:33:46.920 回答
16

你看过Moq 简介吗?这是使用 Moq 的介绍性概述,适用于那些不熟悉一般模拟或 Moq 框架本身的人。

于 2008-10-23T19:48:40.807 回答
5

您是否阅读过https://github.com/Moq/moq4/wiki/Quickstart上的链接页面?例如这个(可能转移到斯蒂芬沃尔特的个人博客

于 2008-10-23T19:59:14.563 回答
1

我正在尝试确定是否从模拟类中引发了一个事件。

你是?或者您是否试图确定该Id属性是否已设置?请记住,默认情况下,模拟没有任何行为。它不会引发通知事件。

我会做:

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

这假设 Entity 实现了一个接口;一个例子:

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

也就是说,如果Entity是一个没有有趣行为的POCO,我既不会实现接口(除了INotifyChanged),也不会模拟它。使用实际Entity实例进行测试(只是不要使用数据库)。为服务和复杂依赖项保留模拟。

有关更多起订量功能,请参阅

旧式命令式模拟与最小起订量功能规范Mock.Of - 如何指定行为?(线程)。我还发布了我自己的Moq v4 功能规范示例。

于 2011-12-17T17:31:51.083 回答