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グループで、ダニエルは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.PropertyChangedEventHandler」の一致する戻り値型を持たないため、「System.ComponentModel.INotifyPropertyChanged.PropertyChanged」を実装できません。
Moqの最新ドキュメントは、github wikiページで入手できます。
https://github.com/Moq/moq4/wiki/Quickstart
以前は、Google Codeにありました。ウィキやその他のオンラインリソースと同様に、Windows .CHMヘルプファイル形式の完全なドキュメントが MoqバイナリダウンロードMoqホームページ からリンクされています。
Moqによるモックの紹介 を見ましたか?これはMoqの使用に関する入門的な概要であり、一般的にモックを作成するか、またはMoqフレームワーク自体を初めて使用するユーザーを対象としています。
https://github.com/Moq/moq4/wiki/Quickstart でリンクされたページを読みましたか?例えば this one (おそらく stephen walthers personal blog )に移動しました
模擬クラスからイベントが発生したかどうかを判断しようとしています。
あなたは?または、Id
プロパティが設定されているかどうかを判断しようとしていますか?デフォルトでは、モックには動作がありません。通知イベントは発生しません。
私がやる:
const int ExpectedId = 123;
mockEntity.VerifySet(x => x.Id = ExpectedId);
これは、Entityがインターフェースを実装することを前提としています。一例:
public interface IKeyedEntity
{
int Id { get; set; }
}
つまり、Entity
が [〜#〜] poco [〜#〜] であり、興味深い動作がなければ、インターフェース(INotifyChanged
以外)も実装しません。 ock笑もしないでください。実際のEntity
インスタンスを使用してテストします(データベースを使用しないでください)。サービスおよび複雑な依存関係のモックを予約します。
Moqのその他の機能については、
古いスタイルの命令型モックとmoq機能仕様 および Mock.Of-動作の指定方法(スレッド)Moq v4機能仕様 の独自の例を投稿しました。