web-dev-qa-db-ja.com

.Netコア3:Microsoft.Extensions.Logging.Internalに名前空間internalは存在しません

Microsoft.Extensions.Logging.Internal名前空間、具体的にはFormattedLogValuesクラスを使用していた.Net core 2.1プロジェクトがあります。

現在.Netコア3に移行しています。FormattedLogValuesの移動先に関するドキュメントや、それに代わるものは見つかりませんでした。

名前空間 documentation も削除されます

任意のヒント?

4
Yahya Hussein

以前の回答が指摘したように、It.IsAnyTypeまたはIt.IsValueTypeを使用する必要があります。

したがって、セットアップは次のようになります。

mock.Setup(_ => _.Log(
  It.IsNotNull<LogLevel>(), 
  It.IsNotNull<EventId>(),
  It.IsAny<It.IsValueType>(),
  It.IsNotNull<Exception>(),
  (Func<It.IsValueType, Exception, string>)It.IsAny<object>());

Ps。 しないでください最後のパラメーターをキャストするのを忘れます。

メソッドに渡されたパラメーターもチェックする必要がある場合は、InvocationActionを使用する必要があります。

mock.Callback(new InvocationAction((invocation) => {
  Assert.AreEqual(level, invocation.Arguments[0]);
  Assert.AreEqual(exception, invocation.Arguments[3]);
}));
0
Needmilk