1

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

当我创建尝试测试 ViewModel 时,我收到此错误:

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

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

谢谢,马丁

4

2 回答 2

1

是的,可以添加参考。唯一的选择是动态创建类型,这并没有真正为您提供太多优势。

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

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

于 2012-07-06T00:47:54.650 回答
0

对 Screen 的依赖是否也会带来很多其他的东西……如果不是,可能没什么大不了的。

ViewModel 是表示层的一部分,通常与您使用的 GUI 框架耦合。推论:当 GUI 框架发生变化时,ViewModel 可能需要重新设计/丢弃,除非您为它设计(将业务逻辑与演示文稿并将其向下推)。如果您对此段落感到愤怒,请查看Robert Martin在 NDC Oslo上关于清洁架构的演讲(可在线获取)

于 2012-07-06T06:16:05.867 回答