我会让用 Foq 模拟一个IBus。
上的方法之一IBus
是OpenPublishChannel
,它返回一个IPublishChannel。IPublishChannel 又具有Bus
返回 parent 的属性IBus
。
我当前的代码如下,但显然它没有编译,因为 mockBus 不是由我需要的点定义的。有没有一种方法可以设置这样的递归模拟,而无需创建两个接口的模拟?
open System
open EasyNetQ
open Foq
let mockChannel =
Mock<IPublishChannel>()
.Setup(fun x -> <@ x.Bus @>).Returns(mockBus)
.Create()
let mockBus =
Mock<IBus>()
.Setup(fun x -> <@ x.OpenPublishChannel() @>).Returns(mockChannel)
.Create()