Заглушка получения свойства с помощью Rhino Mocks

Используя 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");
        }
    }

23
задан Community 23 May 2017 в 12:16
поделиться