获取计数和名称

本文关键字:获取 | 更新日期: 2023-09-27 18:22:09

我有一个名为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);

您正在比较一个int到和int的列表。请尝试此操作以获取计数总和:

var cars= result.Where(x=>x.Count>0).Sum(v=>v.Count);
Assert.Equal(6,cars);

对于超过0辆车的结果数量:

var cars= result.Where(x=>x.Count>0).Select(v=>v.Count);
Assert.Equal(6,cars.Count());

不确定你在找哪一个。这假设您已经为测试初始设置了数据,否则列表将为空。