这真是令人抓狂。我正在尝试使用 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
是一个静态扩展方法,每个想成为编码摇滚明星的人都写了一篇关于使用测试的指南,但我找不到关于运行时该做什么的废话变成这样的东西(静态扩展方法),我不敢相信它这么难......或者也许我只是一个白痴 - 如果有人能解释我是如何去做的就好了......
作为旁注 - 我发现了这个 http://compositewpf.codeplex.com/discussions/68353?ProjectName=compositewpf - 在那篇文章中,他们使用的是 Rhino,如果它可以工作,我会使用它,但它也会爆炸……我不知道那篇文章中的代码是如何工作的。
感谢您的帮助!
最佳答案
您可以获得 IRegionViewRegistry 的一个实例而不是 IRegionManager。作为RegisterViewWithRegion用于执行 View 发现的方法是一个实例成员,您将能够根据需要模拟它。
希望对您有所帮助。 达米安
关于c# - 尝试验证我的模块是否已使用 Moq 调用了 registerViewWithRegion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188835/