2

私のリポジトリクラスの1つ(たとえば、PersonRepo)には、次のようなプロパティとしてデリゲートがあります

private readonly Func<INameRepo> _nameRepo;

これとは別に、それ自体がもう1つのオブジェクト(セッションなど)を期待するクラスによって継承されます。

したがって、テストでこれを初期化すると、次のようになります

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てに渡します。PersonRepoFunc<INameRepo>

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