当视图在MVVM中不可进行单元测试时,为什么单元测试有用?

当视图在MVVM中不可进行单元测试时,为什么单元测试有用?,mvvm,Mvvm,当视图在MVVM中不可进行单元测试时,为什么单元测试有用 在MVVM中,我们有模型、视图模型和视图。所声称的优势是MVVM可以使模型和视图=模型单元可测试。但这三方都属于同一申请。如果视图不是单元可测试的,为什么要测试另外两个呢?对另外两个进行单元测试而不测试其中一个会提高质量吗 从视图中删除所有代码对我来说很奇怪。那么代码只处理纯UI操作呢 MVVM中的视图很愚蠢,你给了它们数据,它们会显示给用户,完成了 操作是restful的,您可以在单元测试中测试它 您可以测试路由使用的视图 这个想法的一

当视图在MVVM中不可进行单元测试时,为什么单元测试有用

在MVVM中,我们有模型、视图模型和视图。所声称的优势是MVVM可以使模型和视图=模型单元可测试。但这三方都属于同一申请。如果视图不是单元可测试的,为什么要测试另外两个呢?对另外两个进行单元测试而不测试其中一个会提高质量吗

从视图中删除所有代码对我来说很奇怪。那么代码只处理纯UI操作呢

  • MVVM中的视图很愚蠢,你给了它们数据,它们会显示给用户,完成了
  • 操作是restful的,您可以在单元测试中测试它
  • 您可以测试路由使用的视图

  • 这个想法的一部分当然是,您的视图应该非常琐碎,以至于“不需要”进行单元测试。但是,可以对GUI进行单元测试,请参见

    一旦您采用MVVM,您会发现您的视图变得非常轻巧,许多逻辑都进入了viewmodel。“纯粹的UI操作”与其说是真正的威胁,不如说是想象中的威胁

    在视图中,但不可单元测试的是动画和绑定。对两者使用声明性形式(即XAML)有助于减少系统的整体不稳定性。一旦这些措施奏效,它们就会继续发挥作用。此外,采用应用程序逻辑并将其与UI“sugar”分离在确保不断变化的应用程序逻辑不会破坏UI逻辑的稳定性方面有很大的帮助


    此外,如果您的代码中有一个非常复杂的动画,那么就不能阻止您以单元可测试的方式对其进行抽象。

    在视图中有许多地方我们可能会出错:1。触发器实际上是程序逻辑。2.如果我们把绑定路径放错了,我们将不会收到任何运行时错误,但是视图将不会显示正确的数据。3.如果将命令绑定到视图模型中的错误处理程序,程序将无法按预期工作。所有这些都需要测试。但是如果我们只测试视图模型,程序仍然没有被测试。这样做的好处是什么?

    “路线使用什么视图”?你不是把MVVM和ASP.NETMVC搞混了吗。。有时,您不想公开模型类(例如:如果您使用Linq2SQL),因此视图可以与专用视图模型一起工作。这里有一个混合的M-V-VM-CI,您同意将“逻辑”推到一个单独的类中,在这个类中可以执行测试,而不需要繁琐的视图。另一个有效的用途是能够无缝地交换视图的“行为”。您可能有一个相当通用的视图,希望根据上下文更改其行为。您可以使用状态字段将该逻辑打包到代码中,但是换掉ViewModel会更干净。触发器实际上是程序逻辑。2.如果我们把绑定路径放错了,我们将不会收到任何运行时错误,但是视图将不会显示正确的数据。3.如果将命令绑定到视图模型中的错误处理程序,程序将无法按预期工作。所有这些都需要测试。但是如果我们只测试视图模型,程序仍然没有被测试。那么好处是什么呢?