获取计数和名称

时间:2015-11-16 14:42:34

标签: 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
}

有人可以帮助我吗?

2 个答案:

答案 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());

不确定您要找的是哪一个。这假设您最初为测试设置了数据,否则列表将为空。