Birim sınama için Moq çerçevesini kullanıyorum ve geçersiz yöntemleri günlüğe kaydetmek için Eylemi iletebilmek istiyorum. Nasıl verebilirim, benF # içinde bir Action <T> nasıl oluşturabilirim?
Microsoft.FSharp.Core.FSharpFunc`2[log4net.ILog,Microsoft.FSharp.Core.Unit]
Yani çıkışı
printfn "%s" (quot.Type.ToString())
kullanarak türünü yazdırabilirsiniz
System.InvalidCastException : Unable to cast object of type 'System.Linq.Expressions.MethodCallExpressionN' to type 'System.Linq.Expressions.Expression
1[System.Action
1[log4net.ILog]]'.
:
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)
Bu kod aşağıdaki hata nedeniyle başarısız Eylem oluşturmak
Moq F # -> muhtemelen kötü bir fikir . –
Yeps, F #, biz bunu yerine atayız - bkz. Http://trelford.com/blog/post/Foq.aspx ve http://trelford.com/blog/post/FoqItEasy.aspx (Moq'dan çok kolay geçiş) –