C# 如何测试返回的数组至少包含一个具有特定属性值的值
假设我有一个我想测试的方法:C# 如何测试返回的数组至少包含一个具有特定属性值的值,c#,asp.net,unit-testing,C#,Asp.net,Unit Testing,假设我有一个我想测试的方法: public Cars[] GetCars(); 我想测试这个方法返回的数组是否至少包含一辆“Mustang”类型的汽车 我该怎么做呢 目前我有如下代码: [Test] public void GetCars_ReturnsMustangs() { Cars[] cars = GetCars(); foreach(Car car in cars) { Assert.IsTrue(Car.Type == "Mustang");
public Cars[] GetCars();
我想测试这个方法返回的数组是否至少包含一辆“Mustang”类型的汽车
我该怎么做呢
目前我有如下代码:
[Test]
public void GetCars_ReturnsMustangs()
{
Cars[] cars = GetCars();
foreach(Car car in cars)
{
Assert.IsTrue(Car.Type == "Mustang");
}
}
虽然就我所知,这是一个测试,但我知道在测试中加入循环不是一个好主意
有人能提出更好的选择吗
谢谢 像这样的东西应该可以做到,只需确保添加“usingsystem.Linq;” (该代码尚未测试语法错误,但应该可以正常工作)
编辑:将
.Count()>0
替换为。根据@John的评论选择任何()
using System.Linq
[Test]
public void GetCars_ReturnsMustangs()
{
Cars[] cars = GetCars();
Assert.IsTrue(cars.Any(c => c.Type == "Mustang"));
}
编辑:
这是一篇关于何时使用Count()和何时使用Any()的好文章
关于:
Assert.IsTrue(cars.Any(c => c.Type == "Mustang"));
您可以使用:
. 使用Any()而不是Count可能会更好。看到这个参考@John-谢谢,在你提到之前我不知道.Any()。感觉我每天都在学习关于LINQ的新东西哈哈
Assert.IsTrue(cars.Any(c => c.Type == "Mustang"));
Assert.Exists(cars, x => x.Type == "Mustang");