我的一个存储库类(例如 PersonRepo)有一个委托(delegate)作为其属性,如下所示
private readonly Func<INameRepo> _nameRepo;
除此之外,它是由一个类继承的,该类本身还需要一个对象(例如 session )。
因此,当我在测试中初始化它时,我会执行类似的操作
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]]'.
你认为我在这里做错了什么。请帮我。
最佳答案
为什么要 mock Func<INameRepo>
?如果你想 mock INameRepo
,为INameRepo
创建一个模拟并将其传递给您的PersonRepo
通过 lambda(这将是 Func<INameRepo>
):
var nameRepo = autoMock.Mock<INameRepo>();
_personRepo = new PersonRepo(session, () => nameRepo.Object);
关于c# - 模拟类的 Func 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3398734/