Используя RhinoMocks, я пытаюсь заглушить значение геттера свойства. Свойство определено как часть интерфейса с доступом только к геттеру.
] Однако я получаю сообщение об ошибке «Неверный вызов, последний вызов был использован или вызов не был выполнен (убедитесь, что вы вызываете виртуальный (C #) / Overridable (VB) метод)». Я понимаю, что это может означать, что свойство, которое я создаю заглушкой, не является виртуальным; однако это часть интерфейса, и я не уверен, является ли это причиной, по которой я получаю эту ошибку ..
Ниже приведен скелет кода. Если я раскомментирую строку, в которой говорится "stubRepository" .Stub (x => x.StoreDeviceID) .PropertyBehavior (); ", то я получаю новую ошибку" Свойство должно быть прочитано / записано ". Я поискал на SO и нашел эту страницу. Но предложенный решение мне не помогает. Есть мысли?
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();
Store.SetRepository(stubRepository);
//stubRepository.Stub(x => x.StoreDeviceID).PropertyBehavior();
SetupResult.For(stubRepository.StoreDeviceID).Return("test");
Assert.AreSame(Store.StoreDeviceID, "test");
}
}