C# Moq 设置 Linq 函数
C# Moq SetUp Linq Function
我要回顾某人的代码并添加一些单元测试。我希望有人可以帮助我为 Linq 创建最小起订量设置?
我的查询类似于
var someitem = _someRepo.GetAll().Where(x=> x.CustomerId == customerId)
.OrderByDescending(x=> x.DateAdded)
.Take(3)
.ToList();
我不确定如何设置多个条件(.Where()、.Take() 等...)
我是否必须分别设置它们中的每一个,还是采用更好的方法?
更好的方法是将查询和条件放在存储库本身的方法中。然后,您可以模拟该方法,完全不用担心它。
例如(我正在对实体名称等进行一些猜测):
存储库class
public List<Customer> GetLatestThreeCustomers()
{
return Where(x=> x.CustomerId == customerId)
.OrderByDescending(x=> x.DateAdded)
.Take(3)
.ToList();
}
请注意,您可能不需要 GetAll
方法,如果您使用 Entity Framework Where
没有它仍然会得到正确的结果。
然后,只需在测试中模拟 GetLatestThreeCustomers
方法 class。
如果你不能创建一个新的存储库方法,你可以自己模拟 GetAll
,这样你就可以测试订单和查询,因为你可以控制它 returns (所以你可以 return 什么都没有,没有匹配的,不同的日期等)。
我要回顾某人的代码并添加一些单元测试。我希望有人可以帮助我为 Linq 创建最小起订量设置?
我的查询类似于
var someitem = _someRepo.GetAll().Where(x=> x.CustomerId == customerId)
.OrderByDescending(x=> x.DateAdded)
.Take(3)
.ToList();
我不确定如何设置多个条件(.Where()、.Take() 等...)
我是否必须分别设置它们中的每一个,还是采用更好的方法?
更好的方法是将查询和条件放在存储库本身的方法中。然后,您可以模拟该方法,完全不用担心它。
例如(我正在对实体名称等进行一些猜测):
存储库class
public List<Customer> GetLatestThreeCustomers()
{
return Where(x=> x.CustomerId == customerId)
.OrderByDescending(x=> x.DateAdded)
.Take(3)
.ToList();
}
请注意,您可能不需要 GetAll
方法,如果您使用 Entity Framework Where
没有它仍然会得到正确的结果。
然后,只需在测试中模拟 GetLatestThreeCustomers
方法 class。
如果你不能创建一个新的存储库方法,你可以自己模拟 GetAll
,这样你就可以测试订单和查询,因为你可以控制它 returns (所以你可以 return 什么都没有,没有匹配的,不同的日期等)。