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の最新のドキュメントは、githubwikiページで入手できます。

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

以前は、GoogleCodeに掲載されていました。ウィキやその他のオンラインリソースに加えて、MoqホームページからリンクされているMoqバイナリダウンロードに含まれているWindows.CHMヘルプファイル形式の完全なドキュメントがあります。

于 2008-11-09T19:33:46.920 に答える
16

Introduction to Mocking with 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; }
}

とはいえ、 が興味深い動作を持たないPOCOEntityである場合、インターフェイス ( 以外) を実装したり、モックしたりしません。実際のインスタンスでテストします (データベースは使用しないでください)。サービスと複雑な依存関係のためにモッキングを予約します。INotifyChangedEntity

その他の Moq 機能については、次を参照してください。

古いスタイルの命令型モック vs moq 機能仕様Mock.Of - 動作を指定する方法は? (スレッド) . また、 Moq v4 機能仕様の独自の例も投稿しました。

于 2011-12-17T17:31:51.083 に答える