我正在使用 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]
那么,我怎样才能创建一个动作呢?