Utilizando RhinoMocks, estoy tratando de anular el valor getter de una propiedad. La propiedad se define como parte de una interfaz con solo acceso getter.Obstaculizar una propiedad obtener usando Rhino Mocks
Sin embargo me sale el error "Llamada no válida, la última llamada se ha utilizado o no se ha hecho ninguna llamada (asegúrese de estar llamando a un método virtual (C#)/Overridable (VB))". Entiendo que esto puede significar que la propiedad que estoy cortando no es virtual; Sin embargo, es parte de la interfaz y no estoy seguro de si ese es el motivo por el que aparece este error ...
A continuación se muestra el código esqueleto. Si elimino el comentario de la línea que dice "stubRepository.Stub (x => x.StoreDeviceID) .PropertyBehavior();", aparece un nuevo error "La propiedad debe ser de lectura/escritura". Busqué SO y encontré this página. Pero la solución propuesta no me ayuda. ¿Alguna idea?
public interface IStore {
string StoreDeviceID {get;}
//other methods
}
public static class Store {
private IStore Repository;
public void SetRepository(IStore rep){
Repository = rep;
}
public StoredeviceID {
get{
return Repository.StoreDeviceID;
}
}
//other methods
}
public class TestClass {
[Test]
public void TestDeviceID() {
var stubRepository =
MockRepository.GenerateStub<IStore>();
Store.SetRepository(stubRepository);
//stubRepository.Stub(x => x.StoreDeviceID).PropertyBehavior();
SetupResult.For(stubRepository.StoreDeviceID).Return("test");
Assert.AreSame(Store.StoreDeviceID, "test");
}
}
@ Adam, ya que la propiedad es de solo lectura, no puedo configurarlo. Sin embargo, el fragmento de código que proporcionó a Stub la propiedad funciona perfectamente. Tonto, probé todas las demás opciones, excepto que :) – Santhosh
StoreDeviceID no tiene un setter, por lo que su primera declaración 'stubRepository.StoreDeviceID =" test ";' no funcionará. –
Ahh - lo siento. Actualizaré mi respuesta, me alegro de que hayas trabajado. –