このようなnull可能なパラメーターを持つインターフェースがあります
Result<Notice> List(int offset, int limit, Guid? publicationId, Guid? profileId, DateTime? toDate, ListingOrder order);
これは、このメソッドをモックしようとした方法です
mockNoticesClient.Setup(c => c.List(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<Nullable<Guid>>(), It.IsAny<Nullable<Guid>>(), It.IsAny<Nullable<DateTime>>(), Data.Notices.ListingOrder.DateDesc)).Returns(dataNotices);
次に、メソッドを使用しようとすると
var results = this.noticesClient.List(0, 100, null, profileId, latestNoticeTime, Data.Notices.ListingOrder.DateDesc);
この例外がスローされても、この行が実行されるたびに
... threw an exception of type 'System.NullReferenceException' ... {System.NullReferenceException}
パラメータに null を指定してセットアップを使用するなど、いくつかの異なる組み合わせを試しましたが、これも機能しません。私は最新バージョン(現在)であるMoq 4.0.10827を使用しています。
編集: noticesClientのコンストラクターは、dataNoticesClientのインターフェースを取ります
public Client(Data.Notices.INotices noticesClient)
このように初期化されます
mockNoticesClient = new Mock<Data.Notices.INotices>();
noticesClient = new Client(mockNoticesClient.Object);
mockNoticesClient.Setup(c => c.List(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<Nullable<Guid>>(), It.IsAny<Nullable<Guid>>(), It.IsAny<Nullable<DateTime>>(), It.IsAny<Data.Notices.ListingOrder>())).Returns(dataNotices);
mockNoticesClient.Setup(c => c.List(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<Guid?>(), It.IsAny<Guid?>(), It.IsAny<DateTime?>(), It.IsAny<Data.Notices.ListingOrder>())).Returns(dataNotices);