我正在尝试将以下 C# 重写为 F#,它使用 NSubstitute 模拟 Log4Net 记录器,并将传递给 Log.ErrorFormat 调用的参数捕获到 _loggerException 字符串中。
string _loggerException = string.Empty;
this.c_logger.When(log => log.ErrorFormat(
Arg.Any<string>(), Arg.Any<string>()))
.Do(logger => _loggerException = logger.Arg<string>().ToString());
以下是我达到的F#
let mutable _loggerException = System.String.Empty
let _logger = Substitute.For<ILog>()
SubstituteExtensions.When(_logger, _logger.WarnFormat(Arg.Any<string>(), Arg.Any<string>())).Do(fun logger -> _loggerException <- logger.Arg<string>())
但是,我在第二个参数上遇到错误SubstituteExtensions.When
-_logger.WarnFormat(Arg.Any<string>(), Arg.Any<string>())
如下:
这个表达式应该有 type
Action<ILog>
但这里有 typeunit
。
关于我做错了什么有什么想法吗?