단위 테스트를 위해 Moq 프레임 워크를 사용 중이며 void 메소드 로깅을 위해 Action을 전달할 수 있기를 원합니다. 어떻게 내가 할 수있는, 내가F #에서 <T> 액션을 만들려면 어떻게해야합니까?
Microsoft.FSharp.Core.FSharpFunc`2[log4net.ILog,Microsoft.FSharp.Core.Unit]
그래서 출력
printfn "%s" (quot.Type.ToString())
사용 유형을 인쇄 할 수 있습니다
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)
이 코드는 다음과 같은 오류와 함께 실패 액션을 만드시겠습니까?
MOQ F에 # -> 아마 좋은 생각 . –
F #에서는 Foq 대신 http://trelford.com/blog/post/Foq.aspx 및 http://trelford.com/blog/post/FoqItEasy.aspx (Moq에서 아주 쉽게 전환) –