【发布时间】:2013-04-24 04:55:56
【问题描述】:
我想用 Foq 模拟 IBus。
IBus 上的方法之一是OpenPublishChannel,它返回一个IPublishChannel。 IPublishChannel 又具有一个Bus 属性,该属性返回父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()
【问题讨论】: