2011-03-17 55 views
7

我正在开发一个WPF Prism应用程序,并且一切工作正常。我的视图模型都具有由MEF注入的接口。关于查看模型和接口

不过,我真的不明白的视图模型接口的好处。毕竟,视图与视图模型相关联,所以我认为永远不会有其他的实现。

其实,我也有我的看法接口。看来这也是矫枉过正?

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

THX, 大号

回答

4

接口您的ViewModels给你嘲笑他们在测试,接口您浏览的利益看起来有些矫枉过正确实如此。你不会交换你的观点和UI测试可以在你的ViewModel的模拟上完成,所以你不会真的需要接口他们我认为。

+0

为什么在测试中模拟你的ViewModels?我只是使用实际的ViewModel。 – 2011-03-17 18:49:56

+0

我会嘲笑ViewModels以期望它们。这样我就知道在测试视图时应该看什么。我也可以编写测试,在测试过程中使用数据填充ViewModel并提供它们。这确实是相同的。 – 2011-03-18 07:34:32

+1

谢谢,所以我正确地说,在连接视图模型时没有太多附加价值,因为:1.我们不需要嘲笑它们,因为它是视图模型本身必须经过测试。 2.因此,嘲笑一个子视图模型没什么意义,因为我们也想测试一个实际的模型。 3.为了测试视图,我们只用数据填充实际视图模型。 4.鉴于观点与其观点模型相结合,总会有1个实施。 – 2011-03-18 09:04:49

2

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

MVVM模式可以更容易地进行单元测试的类,因为它从UI层(其是更难以编写单元测试)分离数据和控制。就我个人而言,我不会为我的观点编写接口。

7

这是矫枉过正。我明白你可能想嘲笑你的ViewModels,但我认为实践起来更重要。另外,为什么你甚至需要模拟你的ViewModels?任何需要被嘲笑的逻辑应该被放入一个服务类恕我直言。

+0

这的确是我的第一个想法。看起来好处是,如果你有多个视图模型,你可以测试其中一个视图并嘲笑其他视图模型。我只是想知道我是否会这么做......大多数逻辑确实在注入的“服务”中,并且可以替换为我的模拟实现。 – 2011-03-18 07:26:47