免责声明:棱镜新手。我正在疯狂地阅读以弥补失去的时间:)
上下文:我需要为使用 Prism 构建的 WPF 应用程序编写自动化验收测试。
问题:我发现在没有 UI 的情况下尝试组合支持 ViewModel 和他们需要的一切是很复杂的。
我在这里可能错了... Prism 允许您使用命名占位符(区域)标记外壳。不同的模块(隔离单元)使用相应的 RegionNames 注册它们的视图。视图还依赖于通过 MEF/Unity 注入的 ViewModel(ctor 注入)。
- 显示视图
- 触发子视图的创建(regionName => View registry)
- 触发子视图模型的创建(Mef ctor 注入)。
因此,编写应用程序被委托给 Prism(或更重要的是 View)。这似乎是一种视图优先的方法。这会在没有 UI 的情况下启动应用程序。使用 UI 进行测试很痛苦。
我正在寻找的是一种演示者优先的方法,它在没有 UI 的情况下组成整个对象(ViewModel 和依赖项)图。
var viewModel = Someone.ComposeAndGet<ShellViewModel>();
Prism4 是否可以通过不同的方式编写应用程序或不支持?
[更新:2011 年 12 月]
http://compositewpf.codeplex.com/discussions/283065
发布在 prism 论坛上以获得更多信息;似乎这是不可能的。建议使用 UI 测试进行验收测试。Prism 组成 UI;因此对观点有至关重要的依赖性。