2

我的一个存储库类(比如 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]]'.

你认为我在这里做错了什么。请帮我。

4

1 回答 1

3

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

var nameRepo = autoMock.Mock<INameRepo>();
_personRepo = new PersonRepo(session, () => nameRepo.Object);
于 2010-08-04T15:26:25.497 回答