单元测试视图从屏幕继承的模型 (Caliburn.Micro)



我已经开始学习TDD,我遇到了ViewModel测试。我使用 Caliburn.Micro 作为我的 MVVM 框架,我的 ViewModels 继承自 Screen。

当我创建尝试测试视图模型时,出现此错误:

类型"Caliburn.Micro.Screen"在未引用的程序集中定义。您必须添加对程序集"Caliburn.Micro"的引用

可以吗?我认为将我的类与框架隔离是正确的途径,但我不知道我应该怎么做(通过从 Screen 继承来保留框架带来的好处)

谢谢马丁

是的,可以添加引用。唯一的替代方法是动态创建类型,这并没有真正为您提供太多优势。

我假设您的视图模型不会尝试显示任何屏幕。如果是这样,则需要对其进行子类化以获得可以进行单元测试的版本。

我没有使用过Caliburn.Micro,但听起来有点奇怪,你的ViewModel继承自Screen。通常,对于 MVVM,视图模型知道视图,但不继承自视图。快速的Google搜索表明,在Caliburn.Micro中,ViewModel实现了IScreen接口,而不是从Screen继承。

对屏幕的依赖是否也会带来一堆其他东西......如果没有,可能没什么大不了的。

视图模型是表示层的一部分,通常与您使用的GUI框架耦合。推论:当 GUI 框架发生变化时,视图模型可能需要重新设计/丢弃,除非您为它设计(将业务逻辑与表示分开并将其向下推)。如果您对这段话感到愤怒,请查看罗伯特·马丁在 NDC 奥斯陆关于清洁建筑的演讲(可在线获取)

最新更新