C#最小起订量设置Linq功能

C#最小起订量设置Linq功能,c#,linq,moq,C#,Linq,Moq,我将回顾某人的代码并添加一些单元测试。我希望有人能帮我为Linq创建Moq设置 我的问题类似于 var someitem = _someRepo.GetAll().Where(x=> x.CustomerId == customerId) .OrderByDescending(x=> x.DateAdded) .Take(3)

我将回顾某人的代码并添加一些单元测试。我希望有人能帮我为Linq创建Moq设置

我的问题类似于

var someitem = _someRepo.GetAll().Where(x=> x.CustomerId == customerId)
                                 .OrderByDescending(x=> x.DateAdded)
                                 .Take(3)
                                 .ToList();
我不知道如何设置多个条件(.Where(),.Take()等)


我需要分别设置它们还是用更好的方法设置它们?

更好的方法是在存储库本身的方法中设置查询和条件。然后,您可以嘲笑该方法,而不必担心它

例如(我正在猜测实体名称等):

存储库类

public List<Customer> GetLatestThreeCustomers()
{
    return Where(x=> x.CustomerId == customerId)
                             .OrderByDescending(x=> x.DateAdded)
                             .Take(3)
                             .ToList();
}
public List GetLatestThreeCustomers()
{
返回其中(x=>x.CustomerId==CustomerId)
.OrderByDescending(x=>x.DateAdd)
.采取(3)
.ToList();
}
注意,如果您使用的是实体框架
Where
,则可能不需要
GetAll
方法,如果没有它,仍然可以得到正确的结果

然后,在测试类中模拟
GetLatestThreeCustomers
方法


如果你不能创建一个新的存储库方法,你可以自己模拟
GetAll
,这样你就可以测试顺序和查询,因为你可以控制它返回的内容(这样你就可以不返回任何内容,不返回匹配的内容,不返回不同的日期等)。

你好,史蒂夫,谢谢你的提示方法。你的建议是我通常会做的。然而,我们正朝着一个通用的回购模型发展(这个回购模型还没有被移走),所以我避免创建特定的方法。@S-Unit请看我的编辑,在你的新模型准备好之前,你可以做
GetAll
,作为权宜之计。非常感谢。我想我是想让它变得比需要的更复杂。你应该模仿
\u someRepo
GetAll
方法。