Используя Moq, я издеваюсь над свойством Report TheReport { get; set; }
на интерфейсе ISessionData
, чтобы проверить значение, которое устанавливается в этом свойстве.
Для этого я использую SetupGet
и SetupSet
следующим образом:
// class-level fields
protected Report _sessionReport;
protected Mock<ISessionData> SessionData { get; private set; }
И в моем методе настройки...
SessionData = new Mock<ISessionData>();
SessionData
.SetupSet(s => s.TheReport = It.IsAny<Report>())
.Callback<RDLDesigner.Common.Report>(r =>
{
_sessionReport = r;
SessionData.SetupGet(s => s.TheReport).Returns(_sessionReport);
});
Я нашел этот подход на qaru.site/info/255130/..., и он работает, но я не понимаю, почему. Я ожидал получить вызов SetupGet
за пределами обратного вызова SetupSet
.
Может ли кто-нибудь объяснить, как и почему работает этот подход, и если это наиболее подходящий способ издеваться над свойством этого типа?
Изменить
Использование SessionData.SetupProperty(s => s.TheReport);
также работает в моем сценарии, но меня все еще интересуют любые объяснения того, как и почему мой оригинальный подход работал.