У меня есть сложный объект, который я пытаюсь подделать.FakeItEasy глубоко вложенные типы faking
interface IContext
{
User User { get; }
}
A.CallTo(
() => _fakeContext.User.Subscription.Attributes)
.Returns(new List<Attribute>());
Но я получаю следующее исключение:
The current proxy generator can not intercept the specified method for the following reasons: - Non virtual methods can not be intercepted
Все вложенные типы являются свойствами, и они представляют собой простые анемией типы с get; set;
модификаторов свойств. И когда я смотрю в отладчик, все они подделки.
Есть ли способ установить последнее свойство цепи и избежать установки всех предыдущих?
Является собственность на 'User' виртуальной? Если бы вы могли опубликовать исходный код для 'User'? – Xharze
Нет. Ни пользователь, ни подписка не являются виртуальными. Это код из скомпилированной сборки. –
FakeItEasy не может высмеивать не виртуальные методы, поэтому вам нужно решить построить сам объект. Что-то вроде ответа ниже сделало бы трюк. – Xharze