Tôi đang sử dụng khung công tác Moq để kiểm tra đơn vị và muốn có thể chuyển sang Hành động để ghi nhật ký các phương thức void.Làm cách nào để tạo một Action <T> trong 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)
Mã này không thành công với các lỗi sau:
System.InvalidCastException : Unable to cast object of type 'System.Linq.Expressions.MethodCallExpressionN' to type 'System.Linq.Expressions.Expression
1[System.Action
1[log4net.ILog]]'.
tôi có thể in các loại bằng cách sử dụng
printfn "%s" (quot.Type.ToString())
mà kết quả đầu ra
Microsoft.FSharp.Core.FSharpFunc`2[log4net.ILog,Microsoft.FSharp.Core.Unit]
Vì vậy, làm thế nào tôi có thể tạo một hành động?
Moq trong F # -> có lẽ là một ý tưởng tồi . –
Yeps, trong F #, chúng tôi thay thế Foq - xem http://trelford.com/blog/post/Foq.aspx và http://trelford.com/blog/post/FoqItEasy.aspx (Chuyển đổi rất dễ dàng từ Moq) –