获取计数和名称
本文关键字:获取 | 更新日期: 2023-09-27 18:22:09
我有一个名为Cars
的类,它有两个属性,即Count
和Name
。
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());
不确定你在找哪一个。这假设您已经为测试初始设置了数据,否则列表将为空。