我有一个名为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
}
有人可以帮助我吗?
答案 0 :(得分:4)
本声明
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);
答案 1 :(得分: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());
不确定您要找的是哪一个。这假设您最初为测试设置了数据,否则列表将为空。