【问题标题】:How to Unit Test View Model and Model of a Mvvm application in wpf如何在 wpf 中对 Mvvm 应用程序的视图模型和模型进行单元测试
【发布时间】:2014-08-26 06:59:56
【问题描述】:

您能否建议我一些有关如何对 MVVM 应用程序的视图模型和模型进行单元测试的资源。

我将使用 rhino-mock 作为模拟测试框架。

令人惊讶的是,我找不到任何具体的资源。我已经调查过了 MVC to unit test by Josh Smith

但它没有帮助我。

感谢您的帮助。

【问题讨论】:

  • 您可能需要编辑您的问题,因为它目前是off topic... 要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题与 Stack Overflow 无关,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。

标签: c# wpf unit-testing rhino-mocks


【解决方案1】:

ReactiveUI + Moq + Fluent Assertions 的示例。

正如@Raghu 已经指出的那样,测试常规课程并没有真正的区别,但可能会有一些更新的维度,例如如何测试基于时间的效果。这可以通过使用Test Scheduler 的响应式扩展方法来回答。

以我的blog为例:

public class WordCounterViewModel : ReactiveObject {

 public WordCounterViewModel(IObservable<string> someBackgroundTicker)
 {
  ...
 }
...
}

还有测试,包括一个虚拟模拟:

[TestMethod]
public void WordCounterViewModelTest()
{
    var mock = new Mock<IObservable<string>>();
    var vm = new WordCounterViewModel(mock.Object);

    vm.WordCount.Should().Be(0);

    vm.TextInput = "bla!";
    vm.WordCount.Should().Be(1);

    vm.TextInput = "bla, bla!!";
    vm.WordCount.Should().Be(2);
}

如果您知道如何创建和运行单元测试,那么您现在应该能够测试您的视图模型了。

【讨论】:

    【解决方案2】:

    对 ViewModel 进行单元测试与测试常规类没有任何不同。这就是 MVC 的美妙之处。您在视图中所做的只是调用方法。

    我猜你应该寻找如何编写可测试代码,而不是寻找为 MVC 编写单元测试的资源。

    我会推荐你​​这个链接:http://www.netsoft-usa.com/2010/09/unit-testable-code-using-model-view-presenter/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-27
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2014-04-09
      • 1970-01-01
      • 2010-12-07
      相关资源
      最近更新 更多