c# - 模拟类的 Func 属性

标签 c# unit-testing mocking automocking

我的一个存储库类(例如 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/

相关文章:

c# - 如何找到二维数组的大小?

javascript - 仅使用 'export' 关键字导入单元测试

Phpunit:在功能测试中的类中添加方法

c# - web.config 中的条件位置授权?

c# - "Use the new keyword if hiding was intended"警告

安卓, Gradle 。如何构建应用程序并从测试应用程序运行测试

asp.net-mvc - ASP.NET MVC Controller 的代码中应该测试什么?

go - 使用 go-sqlmock 在 SQL 查询中获取参数值

spring - 如何在 MockMvc 中从 jsonPath() 中检索字符串

c# - 浏览器检测