MOQ: ¿cómo crear manualmente una propiedad de respaldo usando SetupGet / SetupSet?
Sé que podemos llamar aSetupAllProperties()
para crear automáticamente propiedades de respaldo. Pero esto es demasiado restrictivo, porque no me permite ejecutar código adicional en el captador / configurador. Por ejemplo, me gustaría crear un setter moq'd que invoque algún otro método / evento / lógica.
El siguiente ejemplo de código reproduce el problema
public interface IA
{
int B { get; set; }
};
class Test
{
[Test]
public void BackingPropertyTest()
{
int b = 1;
var mockA = new Mock<IA>();
//mockA.SetupAllProperties();
mockA.SetupGet(m => m.B).Returns(b);
mockA.SetupSet(m => m.B).Callback(val => b = val);
mockA.Object.B = 2;
Assert.AreEqual(2, b); // pass. b==2
Assert.AreEqual(2, mockA.Object.B); // fail. mockA.Object.B==1, instead of 2
}
}
Dado que el getter está configurado para devolver el valor de la variable local (que supongo que ahora es una variable capturada), esperaría vermockA.Object.B == 2
. Pero en cambio, es1
.
¿Me estoy perdiendo algo fundamentalmente aquí? ¿O es esto un error MOQ? Estoy ejecutando MOQ 4.0.10501.6