我的一个存储库类(比如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]]'.
你认为我在这里做错了什么?请帮我。
答案 0 :(得分:3)
为什么嘲笑Func<INameRepo>
?如果您想模拟INameRepo
,请为INameRepo
创建一个模拟,并通过lambda(将是PersonRepo
)将其传递给您的Func<INameRepo>
:
var nameRepo = autoMock.Mock<INameRepo>();
_personRepo = new PersonRepo(session, () => nameRepo.Object);