c# - 获取计数和名称

标签 c# linq unit-testing

我有一个名为 Cars 的类,它有两个属性,即 CountName

public class Cars
{
    public string Name { get; set; }
    public int Count{ get; set; }
}

我正在尝试对我的存储库层进行单元测试,但无法正确获取 Count 的值。

这是我的单元测试

public void GetCarStats()
{
   var mockRepo = new VehicleRepository();     
   var result = mockRepo.GetCarStats(Guid.Parse("9F733662-FP4E-69DC-AX600-A4C250F9E166"));

   Assert.NotEmpty(result);
   Assert.Equal(1, result.Count);   

   var cars= result.Where(x => x.Count > 0).Select( v => v.Count);

   Assert.Equal(6, cars);//This statement is failing
}

谁能帮帮我?

最佳答案

这个声明

var cars= result.Where(x=>x.Count>0).Select(v=>v.Count);

会给你一个IEnumerable<int>你正试图将它与一个数字 6 进行比较,这应该会失败。

根据您的需要,您可以获得First元素并将其与 6 进行比较或者你可以使用 Sum得到计数的总数。

var cars= result.Where(x=>x.Count>0).Select(v=>v.Count).FirstOrDefault();
Assert.Equal(6,cars);//This statement is failing

如果您对根据您的条件返回的记录总数感兴趣 count > 0然后使用 Count而不是 Select(v=> v.Count)喜欢:

var cars = result.Where(x => x.Count > 0).Count();

var cars = result.Count(x=> x.Count > 0);

关于c# - 获取计数和名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33738003/

相关文章:

c# - 如何使用 Linq 按日期对订单列表进行分组

c# - Newtonsoft JSON.NET 反序列化错误

c# - 在联接的基本 LINQ 查询上使用 lambda 表达式

c# - C#/JIT 编译器是否有机会删除包含将变量分配给属性的行,这些行以后不会使用?

c# - 如何以编程方式将图像上传到 umbraco 7 后台内容页面的媒体选择器中

unit-testing - sbt testOnly 不工作

c# - 在单元测试中输出文本

c# - 我是否应该复制使用模拟的单元测试并将其更改为真实的数据库以进行集成测试?

c# - 无法跟踪实体类型 'Item' 的实例,因为已跟踪具有相同键值 {'Id' } 的另一个实例

c# - 解释 C# 堆栈跟踪