私がテストしている方法があります。特定の入力が与えられた場合、失敗メソッドをロガー (ILogger) に書き込む必要があります。インターフェイスには、Log() のいくつかのオーバーロードと、いくつかのプロパティ (ログ レベルなど) があります。FakeItEasy を使用してロガーをモックしています。
私が断言したいのは、Log() への呼び出しが発生したということです。ただし、どの特定のオーバーロードが使用されたかは気にしません。これどうやってするの?
私のアイデア:
// Doesn't work, since a different overload (with more parameters) is used.
A.CallTo(() => mockLogger.Log(null)).WithAnyArguments().MustHaveHappened();
// "Works", but if the code were to call something else on the logger
// (ex. change the logging level), this would also pass!
Any.CallTo(mockLogger).MustHaveHappened();