c# - 尝试验证我的模块是否已使用 Moq 调用了 registerViewWithRegion

标签 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 是一个静态扩展方法,每个想成为编码摇滚明星的人都写了一篇关于使用测试的指南,但我找不到关于运行时该做什么的废话变成这样的东西(静态扩展方法),我不敢相信它这么难......或者也许我只是一个白痴 - 如果有人能解释我是如何去做的就好了......

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

感谢您的帮助!

最佳答案

您可以获得 IRegionViewRegistry 的一个实例而不是 IRegionManager。作为RegisterViewWithRegion用于执行 View 发现的方法是一个实例成员,您将能够根据需要模拟它。

希望对您有所帮助。 达米安

关于c# - 尝试验证我的模块是否已使用 Moq 调用了 registerViewWithRegion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188835/

相关文章:

c# - 如何使用 DryIoc 而不是 Unity 在 Prism 中配置模块目录?

c# - Prism 中 CompositePresentationEvent<> 的多个参数

c# - 无法序列化/反序列化传递给 WCF 方法的参数

c# - 如何使用 "is"来测试类型是否支持 IComparable?

c# - 日期验证 - StartDate、EndDate MVC

prism - 使用交互请求的自定义弹出窗口的大小

c# - 当参数为 MultipartFormDataStreamProvider 时无法模拟接口(interface)方法

c# - Moq 可以模拟 HubConnection 但 RhinoMocks 不能?

c# - 无法将带 [] 的索引应用于类型 'CaSTLe.Proxies.RangeProxy' 的表达式

c# - 使用泛型类型作为泛型参数的最优雅的方法是什么?