试图验证我的模块使用Moq调用registerViewWithRegion

时间:2011-03-04 01:56:26

标签: c# prism moq

这令人抓狂。我正在尝试使用Moq编写一个简单的测试(目前但我将使用任何有效的东西),它将验证registerViewWithRegion是否被调用,但prism中的每个怪异方法都是静态扩展方法!我在网上搜索了一个这样的例子但没有发现任何东西......希望有人可以告诉我如何解决这个问题。这是我想要做的。

var container = new UnityContainer();
var regionManagerMock = new Mock<IRegionManager>();
regionManagerMock.Setup(r => r.RegisterViewWithRegion("",  typeof(RibbonControlView)));
container.RegisterInstance(regionManagerMock.Object);

 RibbonControlModule ribbonControlModule = new RibbonControlModule(container);
 ribbonControlModule.Initialize();

 regionManagerMock.Verify(x => x.RegisterViewWithRegion("RibbonRegion", typeof(RibbonControlView)));

当然,爆炸原因导致RegisterViewWithRegion是一种静态扩展方法,每个想编码的摇滚明星都写过关于使用测试的howto但我找不到关于当你遇到类似事情时该做什么的粪便这个(静态扩展方法),我不敢相信这很难......或者我可能只是个白痴 - 如果有人可以解释我是怎么做的那就没关系......

正如旁注 - 我发现这个http://compositewpf.codeplex.com/discussions/68353?ProjectName=compositewpf - 在那个帖子中他们使用的是Rhino,如果它可以使用我会使用它但它也会爆炸......我不知道那个代码是怎么回事在那篇文章中工作过。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您可以获取IRegionViewRegistry的实例而不是IRegionManager。由于RegisterViewWithRegion方法(用于执行View Discovery)是一个实例成员,因此您可以根据需要进行模拟。

我希望这会有所帮助。 达米安