Moq.FSharp.Extensions中的VerifyAction问题

时间:2019-08-08 16:00:27

标签: 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, null, null, 10)
let result = uut.Run()

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

我在最后一行收到编译错误。 >>“此表达式应具有类型'unit',但此处具有字符串类型”

我试图像这样包装被抱怨的函数:

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

当我这样做时,编译错误消失了,但是在运行时,它抱怨要忽略传递函数的结果。

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

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

问题是我使用了错误的方法...   当我用模拟.VerifyFunc()代替模拟.VerifyAction()时,一切都按我的意愿进行。

`Severe:   org.apache.commons.mail.EmailException: Sending the email to 
the following server failed : smtp.googlemail.com:465
Caused by: javax.mail.MessagingException: Could not connect to SMTP 
host: smtp.googlemail.com, port: 465, response: -1`