【问题标题】:Where to place Moq dlls in the project?将 Moq dll 放在项目中的什么位置?
【发布时间】:2016-01-08 10:38:02
【问题描述】:

我的应用程序有 3 层(WebProject、UnitTestProject 和 CoreProject),使用模拟框架进行单元测试在哪里放置 Moq dll?

【问题讨论】:

  • 你需要把它放在你的 UnitTestProject ...

标签: .net unit-testing c#-4.0 mocking


【解决方案1】:

您应该将所有模拟 dll 放在您的 UnitTestProject 本身中,而不是其他任何地方。例如,如果您使用 MS Moles 和 Pex 框架进行模拟;一旦您右键单击一个 dll 并选择 create moles,它将自动创建并放置 mocked/moled dll 到您的 Reference 文件夹中。

此外,您的其他项目/层与那些模拟的 dll 无关,因此他们不应该知道同样的事情。

【讨论】:

    【解决方案2】:

    我从问题标题中假设您打算使用 Moq,但其他框架的理论保持不变

    您可以使用 Nuget 将moq 安装到UnitTestProject 中

    其他层都不应该知道模拟或模拟,例如您的图层将有一个 IThing 并且 Mock 将满足该接口。

    UnitTestProject

    [Test]
    public void Test()
    {
       var mock = new Mock<IThing>();
       // set ups
    
       var sut = new ThingHandler();
       sut.Act(mock.Object);
    
       // Assert
    }
    

    核心项目

    public ThingHandler
    {
        public result Act(IThing input)
        {
           //do stuff to an IThing
        }
    }
    

    正如你看到的核心项目,不需要知道什么是满足 IThing 接口的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多