Свойство 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);
Другие вопросы по тегам