F# Moq.FSharp.Extensions中的VerifyAction存在问题

F# Moq.FSharp.Extensions中的VerifyAction存在问题,f#,moq,F#,Moq,试图为我的F#项目创建单元测试,我遇到了麻烦。我得到的最接近的方法是使用Moq.FSharp.Extensions库。但是,我发现了一个编译错误 let mock = new Mock<IMonitor>() mock.SetupFunc(fun x -> x.Send(It.IsAny<Alert>())).Returns("OK").End let obj = mock.Object let uut = new Scheduler(context, obj,

试图为我的F#项目创建单元测试,我遇到了麻烦。我得到的最接近的方法是使用Moq.FSharp.Extensions库。但是,我发现了一个编译错误

let mock = new Mock<IMonitor>()
mock.SetupFunc(fun x -> x.Send(It.IsAny<Alert>())).Returns("OK").End
let obj = mock.Object

let uut = new Scheduler(context, obj, null, null, 10)
let result = uut.Run()

// Assert
mock.VerifyAction((fun x -> x.Send(It.IsAny<Alert>())), Times.Never())
let mock=new mock()
mock.SetupFunc(funx->x.Send(It.IsAny())。返回(“确定”)。结束
设obj=mock.Object
让uut=newscheduler(上下文,obj,null,null,10)
让结果=uut.Run()
//断言
mock.VerifyAction((fun x->x.Send(It.IsAny())),Times.Never())
最后一行出现编译错误。>>“此表达式的类型应为'unit',但此处的类型为string”

我试着像这样包装被投诉的函数:

mock.VerifyAction((fun x -> (x.Send(It.IsAny<Alert>())) |> ignore),
                                                     Times.Never())
mock.VerifyAction((fun x->(x.Send(It.IsAny()))|>忽略),
Times.Never())
当我这样做时,编译错误消失了,但在运行时,它抱怨函数的结果被管道忽略

当然,Moq允许验证返回值的方法。 我做错了什么


谢谢你的帮助

问题是我使用了错误的方法。。。 当我用mock.VerifyFunc()代替mock.VerifyAction()时,一切都按照我的要求进行了

mock.VerifyFunc((fun x -> x.Send(It.IsAny<Alert>())), Times.Never())
mock.VerifyFunc((fun x->x.Send(It.IsAny())),Times.Never())