複合アプリケーションライブラリのイベントアグリゲーターを使用しており、単体テストで使用するために、 IEventAggregatorインターフェイスのモックを作成したいと思います。
このタスクにMoqを使用することを計画していますが、これまでのテストの例は次のようになります。
var mockEventAggregator = new Mock<IEventAggregator>();
var mockImportantEvent = new Mock<ImportantEvent>();
mockEventAggregator.Setup(e => e.GetEvent<SomeOtherEvent>()).Returns(new Mock<SomeOtherEvent>().Object);
mockEventAggregator.Setup(e => e.GetEvent<SomeThirdEvent>()).Returns(new Mock<SomeThirdEvent>().Object);
// ...
mockEventAggregator.Setup(e => e.GetEvent<ImportantEvent>()).Returns(mockImportantEvent.Object);
mockImportantEvent.Setup(e => e.Publish(It.IsAny<ImportantEventArgs>()));
// ...Actual test...
mockImportantEvent.VerifyAll();
これは正常に機能しますが、コードで発生する可能性のあるすべてのイベントタイプ(SomeOtherEvent、SomeThirdEvent、...)に対して空のモックを定義する必要を回避する賢い方法があるかどうかを知りたいですか?もちろん、すべてのイベントを[TestInitialize]メソッドでこのように定義することもできますが、もっと賢い方法があるかどうか知りたいですか?:-)