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