У меня есть любой массив объектов (Pilot
) с свойством (Hanger
), который может быть нулевым, который сам имеет свойство (List<Plane>
). В целях тестирования я хочу упростить и "сгладить" это анонимному объекту со свойствами PilotName
(string) и Planes
(array), но не уверен, как обрабатывать свойство null Hanger
или пустой PlanesList
,
(Почему анонимные объекты? Поскольку объекты API, которые я тестирую, доступны только для чтения, и я хочу, чтобы тест был "декларативным": автономным, простым и читаемым... но я открыт для других предложений. Также я пытаюсь узнать больше о LINQ.)
Пример
class Pilot
{
public string Name;
public Hanger Hanger;
}
class Hanger
{
public string Name;
public List<Plane> PlaneList;
}
class Plane
{
public string Name;
}
[TestFixture]
class General
{
[Test]
public void Test()
{
var pilots = new Pilot[]
{
new Pilot() { Name = "Higgins" },
new Pilot()
{
Name = "Jones", Hanger = new Hanger()
{
Name = "Area 51",
PlaneList = new List<Plane>()
{
new Plane { Name = "B-52" },
new Plane { Name = "F-14" }
}
}
}
};
var actual = pilots.Select(p => new
{
PilotName = p.Name,
Planes = (p.Hanger == null || p.Hanger.PlaneList.Count == 0) ? null : p.Hanger.PlaneList.Select(h => ne
{
PlaneName = h.Name
}).ToArray()
}).ToArray();
var expected = new[] {
new { PilotName = "Higgins", Planes = null },
new
{
PilotName = "Jones",
Planes = new[] {
new { PlaneName = "B-52" },
new { PlaneName = "F-14" }
}
}
};
Assert.That(actual, Is.EqualTo(expected));
}
Непосредственная проблема заключается в том, что строка expected... Planes = null
ошибок с,
Невозможно назначить свойство анонимного типа, но признать, что основная проблема может заключаться в том, что использование
null
inactual
используетnull
не лучший подход в первую очередь.
Любые идеи о том, как назначить нулевой массив в expected
или использовать другой подход, чем null
в actual
?