C# 类的Mocking Func属性

C# 类的Mocking Func属性,c#,unit-testing,mocking,automocking,C#,Unit Testing,Mocking,Automocking,我的一个存储库类(比如PersonRepo)有一个委托作为其属性,如下所示 private readonly Func<INameRepo> _nameRepo; 你认为我做错了什么。请帮帮我 为什么要模拟Func?如果要模拟INameRepo,请为INameRepo创建一个模拟,并通过lambda将其传递给PersonRepo(这将是函数): var nameRepo=autoMock.Mock(); _personRepo=newpersonrepo(session,()=>n

我的一个存储库类(比如PersonRepo)有一个委托作为其属性,如下所示

private readonly Func<INameRepo> _nameRepo;
你认为我做错了什么。请帮帮我

为什么要模拟
Func
?如果要模拟
INameRepo
,请为
INameRepo
创建一个模拟,并通过lambda将其传递给
PersonRepo
(这将是
函数
):

var nameRepo=autoMock.Mock();
_personRepo=newpersonrepo(session,()=>nameRepo.Object);

由于泛型,语法变得混乱。请使用10101按钮预先格式化代码。抛出错误时堆栈跟踪是什么样子的?我在你们的代码中并没有看到任何地方看起来应该是IMocked。这可能是一个Automock问题,因为它试图解析子类型。你能在不使用Automock的情况下尝试相同的例子吗?只是使用MOQ?嘿,谢谢。这很有效。。对不起,我花了一些时间才回复。。我已经从构造函数中删除了func,但今天我突然想到了这一点。
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]]'.
var nameRepo = autoMock.Mock<INameRepo>();
_personRepo = new PersonRepo(session, () => nameRepo.Object);