Свойство Mocking Func класса
Один из моего класса репозитория (скажем, PersonRepo) имеет делегата в качестве своего свойства что-то вроде этого
private readonly Func<INameRepo> _nameRepo;
и кроме этого он наследуется классом, который сам ожидает еще один объект (скажем, сеанс).
Таким образом, когда я запускаю это в своем тесте, я делаю что-то вроде
var funcNameRepo=autoMock.Mock<Func<INameRepo>>();
_personRepo= new PersonRepo(session,funcNameRepo.Object);
но когда я запускаю этот тест, я получаю следующую ошибку:
Unable to cast object of type 'System.Func`1[Repositories.Interfaces.INameRepo]' to type Moq.IMocked`1[System.Func`1[Repositories.Interfaces.INameRepo]]'.
что ты думаешь я тут делаю не так Помогите мне, пожалуйста.
1 ответ
Решение
Зачем издеваться Func<INameRepo>
? Если вы хотите издеваться над INameRepo
создавай макет для INameRepo
и передать его вашему PersonRepo
через лямбду (которая будет Func<INameRepo>
):
var nameRepo = autoMock.Mock<INameRepo>();
_personRepo = new PersonRepo(session, () => nameRepo.Object);