尝试将F#重写为以下C#,它使用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>())
的第二个参数上收到错误,如下所示:
此表达式应为
Action<ILog>
类型,但此处的类型为unit
。
对我做错了什么的想法?