Как имитировать свойство только для чтения, значение которого зависит от другого свойства макета

(Как указано в тегах, я использую moq ).

У меня есть такой интерфейс:

interface ISource
{
  string Name { get; set; }
  int Id { get; set; }
}

interface IExample
{
  string Name { get; }
  ISource Source { get; set; }
}

В моем приложении конкретные экземпляры IExample принимают DTO (IDataTransferObject )в качестве источника. Некоторые свойства конкретной реализации IExample просто делегируются источнику. Вот так...

class Example : IExample
{
  IDataTransferObject Source { get; set; }

  string Name { get { return _data.Name; } }
}

Я хотел бы создать автономный макет IExample (, автономный, что означает, что я не могу использовать захваченную переменную, поскольку в ходе теста будет создано несколько экземпляров макета IExample )и настроить макет таким образом, чтобы IExample.Name возвращает значение IExample.Source.Name. Итак, я хотел бы создать что-то вроде этого:

var example = new Mock<IExample>();
example.SetupProperty(ex => ex.Source);
example.SetupGet(ex => ex.Name).Returns(what can I put here to return ex.Source.Name);

По сути, я хочу настроить макет так, чтобы он возвращал в качестве значения одного свойства значение свойства подобъекта макета.

Спасибо.

22
задан wageoghe 18 July 2012 в 16:00
поделиться