使用MOQ在mock上查找方法设置

时间:2013-03-20 11:35:28

标签: c# moq

有没有办法在Mock上列出所有模拟的方法(设置)?

让我们说,我创建了如下的模拟:

Mock<IAnInterface> aMock = new Mock<IAnInterface>();
aMock.Setup(am => am.Execute()).Returns(true);

现在,我需要找到Execute上是否设置了aMock

2 个答案:

答案 0 :(得分:1)

Mock <>类型将具有一个名为'Setups'的私有Moq.SetupCollection。 Moq.SetupCollection有一个名为“ setups”的私有List

Easy to check while debugging

或者您可以通过反射来实现:

var bindings = BindingFlags.Instance | BindingFlags.NonPublic;
var setupCollectionProperty = Mapper.GetType().GetProperty("Setups", bindings);
var setupCollection = setupCollectionProperty.GetValue(Mapper);
var setupList = setupCollection.GetType().GetField("setups", bindings);
var setups = setupList.GetValue(setupCollection);

答案 1 :(得分:0)

我不知道询问MOQ(以编程方式)关于配置了哪些设置的方法,但是,在测试失败的详细信息中,运行MOQ 4.0,它确实列出了哪些设置已配置。
Moq reporting on configured setups