Мок-структуры с NSubstitute

я пытаюсь издеваться над некоторой структурой .NET с помощью NSubstitute.

Допустим, я определил следующую структуру:

 struct MyStruct
 {
      public String CustomString { get; private set; }
 }

Нет, я хочу установить возвращаемое значение этого свойства с помощью NSubstitute:

MyStruct myStruct = new MyStruct();

myStruct.CustomString.Returns("test");

Но это не работает и выдает следующее исключение:

Не удалось найти вызов для возврата.

Я также пытался создать Substitute для структуры, но это тоже не работает, потому что структура не является ссылочным типом.

Итак, вы, ребята, знаете какое-нибудь возможное решение для имитации структуры?


person Daniel Tigges    schedule 06.11.2015    source источник


Ответы (1)


Насколько я знаю, это невозможно. NSubstitute (и многие другие фреймворки для имитации .NET) полагаются на Castle DynamicProxy для имитации типов. DynamicProxy в основном создает новый тип на лету, который либо реализует имитируемый интерфейс, либо создает подкласс для имитируемого класса.

Поскольку мы не можем наследовать структуры в .NET, DynamicProxy не сможет создать этот тип прокси. Поэтому мы не можем издеваться над этим, используя этот подход.

person David Tchepak    schedule 10.11.2015