使用NSubstitute模拟NLog4Net并捕获传递给log.ErrorFormat的参数

时间:2014-12-08 21:49:24

标签: f# c#-to-f# fsi

尝试将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

对我做错了什么的想法?

0 个答案:

没有答案
相关问题