Mvvm 关于视图模型和接口

Mvvm 关于视图模型和接口,mvvm,interface,view,model,Mvvm,Interface,View,Model,我正在开发一个WPF Prism应用程序,一切正常。我的视图模型都有接口,接口由MEF注入 然而,我并不真正理解视图模型接口的好处。毕竟,视图是与其视图模型绑定的,所以我认为永远不会有其他实现 实际上,我的视图也有接口。看来这也太过分了 所以我的问题是:我不能删除所有视图和视图模型接口并直接注入视图和视图模型吗?是否有任何理由保留视图和视图模型的接口 Thx, L我能想到的ViewModels接口的最大原因是,您可以编写实现这些接口的模拟,以便在单元测试时使用。由于一个ViewModel可能会与

我正在开发一个WPF Prism应用程序,一切正常。我的视图模型都有接口,接口由MEF注入

然而,我并不真正理解视图模型接口的好处。毕竟,视图是与其视图模型绑定的,所以我认为永远不会有其他实现

实际上,我的视图也有接口。看来这也太过分了

所以我的问题是:我不能删除所有视图和视图模型接口并直接注入视图和视图模型吗?是否有任何理由保留视图和视图模型的接口

Thx,
L

我能想到的ViewModels接口的最大原因是,您可以编写实现这些接口的模拟,以便在单元测试时使用。由于一个ViewModel可能会与另一个ViewModel对话,因此在测试第一个ViewModel时,您可以删除第二个ViewModels行为


MVVM模式使得对类进行单元测试变得更容易,因为它将数据和控制与UI层分离(编写单元测试更难)。就我个人而言,我并不为我的视图编写接口。

在测试中模拟视图模型会给您带来好处,而在视图中进行交互看起来确实有些过火。您不会交换视图,UI测试可以在ViewModel的模拟上完成,所以我认为您不需要真正地对它们进行接口

这太过分了。我知道您可能想要模拟ViewModels,但我认为更重要的是要实用。另外,为什么您甚至需要模拟ViewModels?任何需要模拟的逻辑都应该放在服务类IMHO中。

为什么要在测试中模拟ViewModels?我只是使用实际的ViewModel。我会模拟ViewModel,将期望值放入其中。这样我就知道在测试视图时视图应该是什么样子。我还可以编写一个测试,用数据填充ViewModels,并在测试期间提供它们。这确实是一样的。谢谢,所以我可以正确地说,在界面视图模型中没有太多的附加值,因为:1。我们不需要模仿它们,因为必须测试的是视图模型本身。2.因此,模拟子视图模型没有多大意义,因为我们还想测试实际的子视图模型。3.为了测试视图,我们只需用数据填充实际的视图模型。4.当一个视图与它的视图模型耦合时,总会有一个实现。这确实也是我的第一个想法。它的优点似乎是,如果您有多个视图模型,那么您可以测试其中一个模型并模拟其他模型。我只是想知道我是否会那样做。。。大多数逻辑确实存在于注入的“服务”中,可以在我的模拟实现中替换。