我正在使用Moq框架进行单元测试,希望能够传递Action以记录void方法的日志。
let log = new Mock<ILog>()
let quot = <@ fun (mock:ILog) -> mock.Info(It.IsAny<string>) @>
let expr = (quot.ToLinqExpression() :?> Expression<Action<ILog>>)
log.Verify(expr)
这段代码出现了以下错误:
System.InvalidCastException:无法将类型为“System.Linq.Expressions.MethodCallExpressionN”的对象强制转换为类型“System.Linq.Expressions.Expression
1[System.Action
1[log4net.ILog]]”。
我可以使用以下方法打印出类型:
printfn "%s" (quot.Type.ToString())
这段代码输出的是:
Microsoft.FSharp.Core.FSharpFunc`2[log4net.ILog,Microsoft.FSharp.Core.Unit]
那么,我该如何创建一个 Action?