【发布时间】:2016-06-28 12:55:15
【问题描述】:
我正在开发一个 ASP.NET MVC 项目。在我的项目中,我正在做单元测试。我使用 Moq 进行单元测试。但是我在测试依赖于另一个函数的模型类的方法时遇到了问题。
这是我要测试的模型类示例
public class ItemRepo:IItemRepo
{
private DbContext context = new DbContext();
public IEnumerable<Item> GetItems()
{
return context.items;
}
public string GenerateItemCode()
{
Item item = this.GetItems.OrderByDescending(x=>x.Id).FirstOrDefault();
//do something
return itemCode;
}
}
我想测试 GenerateItemCode 方法
[TestClass]
public class ItemRepoTests
{
[TestMethod]
public void GenerateItemCode_IncreaseDigit()
{
Item[] items = new Item[]{
new Item{
ItemCode = "DN999934"
}
};
ItemRepo itemRepo = new ItemRepo();
//I want to mock GetItems method here
}
}
我在测试代码中注释了我想模拟的内容。我该如何模拟该方法?如何对模拟依赖函数的方法进行单元测试?
【问题讨论】:
-
items是如何引入模型的。它是在内部创建还是注入到类中。 -
这个问题的GetItems方法里面的代码比较重要,请您添加它,这样将向我们展示您是如何从数据库中获取数据的。例如,如果它使用的是 EF DbContext,那么我们可以建议您注入一个模拟 DbContext 来运行单元测试。
-
GetItems 方法只是返回 context.Items
-
请提供minimal reproducible example,以便重现您的问题并提出解决方案。在 cmets 中为您提供点点滴滴。例如,在您的原始问题中没有提到任何上下文。尝试使用相关详细信息更新您的问题。
-
是的,我编辑了这个问题。
标签: asp.net asp.net-mvc unit-testing mocking moq