Estoy escribiendo pruebas de unidad usando Moq. He creado un objeto simulado. Ahora, cuando intento burlarme de su propiedad, obtengo el error "Un árbol de expresiones no puede contener una propiedad indexada"Mocking indexed property
aquí está mi código.
public Node GetNode(IMyInterface interface, string itemName)
{
return interface.Items[itemName];
}
Aquí está la prueba de la unidad
var expected = new Node();
var itemName = "TestName";
var mock = new Mock<IMyInterface>();
mock.Setup(f => f.Items[itemName]).Returns(expected);
var target = new MyClass();
var actual = target.GetNode(mock.Object, itemName);
Assert.AreEqual(expected, actual);
Esta línea es que me da error.
mock.Setup(f => f.Items[itemName]).Returns(expected);
¿Cómo puedo cambiar esta función?
Eso no es un problema moq. Los árboles de expresiones no pueden contener propiedades indexadas como indica el error. Debería refactorizar su código para acceder al elemento de la lista sin recurrir a los índices. –
no puedo cambiar "interface.Items [itemName];" porque lo estoy recibiendo a través de COM, cualquier forma de hacer esto en la prueba, –
¿Qué es exactamente los artículos? ¿Puedes proporcionar la definición de interfaz completa? –