2

是时候使用 MVVM Light ViewModels 进行一些单元测试了。

设置:

脚步:

  1. 创建一个新的 MvvmLight (WP7) -项目
  2. 将项目转换为 WP7.1
  3. 创建一个新的 Silverlight NUnit 项目
  4. 将 WP7-project 引用到 Silverlight NUnit -project
  5. 向 MainViewModel 添加一个虚拟方法(例如公共字符串 DoSomething())
  6. 添加一个实例化 MainViewModel、调用虚拟方法和断言的测试。
  7. 运行测试 -> 一切都应该按预期工作
  8. 添加对 Moq 的引用
  9. 添加带有一些最小起订量的第二种测试方法。我只是从 Moq 的网站复制粘贴了这个演示代码:

    var mock = new Mock();

    // 哇!没有记录/回放怪异?!:) mock.Setup(framework => framework.DownloadExists("2.0.0.0")) .Returns(true) .AtMostOnce();

    // 将 mock.Object 作为协作者并练习它, // 就像在其上调用方法... ILoveThisFramework lovable = mock.Object; bool download = lovable.DownloadExists("2.0.0.0");

    // 验证给定的方法确实是用期望值调用的 mock.Verify(framework => framework.DownloadExists("2.0.0.0"));

  10. 运行测试。

这是我在第 9 步通过 NUnit runner 得到的:

SilverlightNUnitProject2.SilverlightTests.TestSomething:
System.TypeLoadException : Could not load type 'System.Action' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

问题:

这里发生了什么?我的设置的哪一部分失败了,为什么?

更新!

我在这里找到了与此问题相关的博客文章。这激发了我下载并尝试与该文章中使用的完全相同版本的 Moq (3.1.416.3)。你知道吗?有用。

我不会把这个作为答案,因为我仍然不知道这里发生了什么。我认为,原来的问题仍然存在。

4

0 回答 0