Tengo una clase que contiene un método que devuelve un objeto Result que contiene una propiedad de tipo Func.¿Cómo pruebo la unidad de una función C# que devuelve un Func <something>?
class Result {
public Func<Result> NextAction { get; set; }
}
¿Cómo escribo una afirmación de prueba de unidad con respecto al contenido de esta función? A continuación, obviamente, no funciona, ya que el compilador genera dos métodos diferentes para el lambda:
// Arrange
ListController controller = new ListController(domain);
// Act
Result actual = controller.DefaultAction();
// Assert
Func<Result> expected =() => new ProductsController(domain).ListAction();
Assert.That(actual.NextAction, Is.EqualTo(expected));
que supongo que podría hacer esto mediante el uso de los árboles de expresión en su lugar, pero ... ¿hay una manera de evitar ¿haciéndolo? Estoy usando NUnit 2.5.
EDITAR: No hay otros campos de identificación en el objeto Result. Se pretende que sea una forma de invocar el siguiente objeto/método en función de una decisión tomada en el objeto/método actual.
Porque el Func devuelve otro objeto Result, ¡con los mismos problemas! – goofballLogic
Luego necesita implementar algo que identifique el resultado y determine la igualdad en función de eso – Marek
¿Como una cadena arbitraria que describe el intento del Func? – goofballLogic