Estoy usando el marco Moq para pruebas unitarias y me gustaría poder pasar en Acción para registrar métodos vacíos.¿Cómo puedo crear una Acción <T> en F #?
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)
Este código de error con el siguiente error:
System.InvalidCastException : Unable to cast object of type 'System.Linq.Expressions.MethodCallExpressionN' to type 'System.Linq.Expressions.Expression
1[System.Action
1[log4net.ILog]]'.
puedo imprimir el tipo a cabo utilizando
printfn "%s" (quot.Type.ToString())
que da salida a
Microsoft.FSharp.Core.FSharpFunc`2[log4net.ILog,Microsoft.FSharp.Core.Unit]
Así que, ¿cómo puedo crear una acción?
Moq en Fa # -> probablemente una mala idea . –
Yeps, en F #, en lugar de Foq, consulte http://trelford.com/blog/post/Foq.aspx y http://trelford.com/blog/post/FoqItEasy.aspx (transición muy fácil desde Moq) –