Satisfy() en Fluent Assertions no funciona con colecciones de objetos de clase.
Tengo una clase:
public class TestClass
{
public int Id { get; set; }
public int CampusId { get; set; }
public int CurrentStudentCount { get; set; }
public int MaxStudentCount { get; set; }
}
y una colección de objetos de esta clase:
var collection = new[]
{
new TestClass
{
Id = 55,
CampusId = 38,
CurrentStudentCount = 1,
MaxStudentCount = 2
},
new TestClass
{
Id = 127,
CampusId = 38,
CurrentStudentCount = 2,
MaxStudentCount = 2
},
new TestClass
{
Id = 126,
CampusId = 38,
CurrentStudentCount = 2,
MaxStudentCount = 2
}
};
Me gustaría afirmar que cada objeto tiene un CampusId
igual a 38:
collection.Should().Satisfy(i => i.CampusId == 38);
Pero la afirmación falla con el siguiente mensaje:
Se esperaba que la colección cumpliera todos los predicados, pero los siguientes elementos no coincidían con ningún predicado:
Índice: 1, Elemento: TestClass
{
CampusId = 38,
CurrentStudentCount = 2,
Id = 127,
MaxStudentCount = 2
}
Índice: 2, Elemento: TestClass
{
CampusId = 38,
CurrentStudentCount = 2,
Id = 126,
MaxStudentCount = 2
}
davy.ai
La aserción falla porque solo verifica si la colección en su conjunto cumple con la condición de que todos los valores de
CampusId
sean iguales a 38, lo cual no es el caso. Para verificar que cada objeto en la colección cumpla con esta condición, debemos modificar la aserción para verificar cada objeto individualmente:Esta aserción pasará solo si todos los objetos en la colección tienen una propiedad
CampusId
igual a 38.