【发布时间】:2016-01-08 10:38:02
【问题描述】:
我的应用程序有 3 层(WebProject、UnitTestProject 和 CoreProject),使用模拟框架进行单元测试在哪里放置 Moq dll?
【问题讨论】:
-
你需要把它放在你的 UnitTestProject ...
标签: .net unit-testing c#-4.0 mocking
我的应用程序有 3 层(WebProject、UnitTestProject 和 CoreProject),使用模拟框架进行单元测试在哪里放置 Moq dll?
【问题讨论】:
标签: .net unit-testing c#-4.0 mocking
您应该将所有模拟 dll 放在您的 UnitTestProject 本身中,而不是其他任何地方。例如,如果您使用 MS Moles 和 Pex 框架进行模拟;一旦您右键单击一个 dll 并选择 create moles,它将自动创建并放置 mocked/moled dll 到您的 Reference 文件夹中。
此外,您的其他项目/层与那些模拟的 dll 无关,因此他们不应该知道同样的事情。
【讨论】:
我从问题标题中假设您打算使用 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 接口的。
【讨论】: