Я использую инфраструктуру Moq для модульного тестирования и хотел бы иметь возможность перейти в Action для регистрации пустых методов.
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]
Итак, как я могу создать Действие?