这令人抓狂。我正在尝试使用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,如果它可以使用我会使用它但它也会爆炸......我不知道那个代码是怎么回事在那篇文章中工作过。
感谢您的帮助!
答案 0 :(得分:4)
您可以获取IRegionViewRegistry的实例而不是IRegionManager。由于RegisterViewWithRegion方法(用于执行View Discovery)是一个实例成员,因此您可以根据需要进行模拟。
我希望这会有所帮助。 达米安