2011-10-26 12 views
13

Usando FakeItEasy, estoy tratando de capturar el ajuste de un valor de la propiedad en un objeto falso:Usando FakeItEasy, ¿cómo obtener el valor establecido en una propiedad en una falsificación?

En primer lugar la interfaz:

interface ISomeInterface 
{ 
    int MyProperty {get;set;} 
} 

A continuación, un fragmento de prueba de unidad:

var myObject = A.Fake<ISomeInterface>(); 

int saved = 0; 
A.CallTo (() => myObject.MyProperty).Invokes (x => saved = ?????); 

SomeMethod (myObject); 
Assert.That (saved, Is.EqualTo (100)); 

y teniendo

void SomeMethod (ISomeInterface intf) 
{ 
    intf.MyProperty = 100; 
} 

No sé qué poner para reemplazar el ?????

Respuesta

13
var myObject = A.Fake<ISomeInterface>(); 

SomeMethod (myObject); 
Assert.That (saved.MyProperty, Is.EqualTo(100)); 
+0

En cuanto a la segunda parte de su respuesta, quiero el objeto falsa para volver realidad el valor 100 para que otras clases utilizando esta interfaz podría utilizar ese valor. Admito que mi ejemplo no fue lo suficientemente claro. ;) –

+5

Bueno, hay dos formas, ya sea A.CallTo ((= = myObject.MyProperty) .Returns (100); o solo myObject.MyProperty = 100 ;. –

+0

@Patrik Hägne, En segundo lugar, donde asigno la propiedad directamente está trabajando para mí. El primero A.CallTo ((= = dbVM.CreateFolderPath) .Returns (somePath); me devolvió esta excepción. El generador proxy actual no puede interceptar el método especificado por el siguiente motivo: - No se pueden interceptar métodos no virtuales. – VivekDev

Cuestiones relacionadas