es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
}
Tags:  , ,

Answer

  1. Avatar for 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:

    collection.Should().OnlyContain(i => i.CampusId == 38);
    

    Esta aserción pasará solo si todos los objetos en la colección tienen una propiedad CampusId igual a 38.

Comments are closed.