Dependency injection 适当的TDD+;Akka.net中的依赖注入

Dependency injection 适当的TDD+;Akka.net中的依赖注入,dependency-injection,akka.net,akka-testkit,Dependency Injection,Akka.net,Akka Testkit,我有一个和代理,它将读取目录X并为找到的每个子目录创建子代理 对于我的测试环境,我使用了System.IO.Abstractions包来创建IFileSystem接口及其实现(供正常程序使用) 代理(对于dir X)使用Autofac DI创建子代理(因为我们需要为它们提供IFileSystem依赖项,将来可能还会提供更多): var-props=Context.DI().props(); var directoryAgent=Context.ActorOf(props,“DirectoryRe

我有一个和代理,它将读取目录X并为找到的每个子目录创建子代理

对于我的测试环境,我使用了System.IO.Abstractions包来创建IFileSystem接口及其实现(供正常程序使用)

代理(对于dir X)使用Autofac DI创建子代理(因为我们需要为它们提供IFileSystem依赖项,将来可能还会提供更多):

var-props=Context.DI().props();
var directoryAgent=Context.ActorOf(props,“DirectoryReader”);
我的测试如下所示:

public class DirectoryReaderTests : Akka.TestKit.Xunit2.TestKit 
{
    public DirectoryReaderTests()
        : base(@"akka.loglevel = DEBUG")
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<FileSystem>().As<IFileSystem>();

        var container = builder.Build();  // <--- how do I use this with TestKit
    }

    [Fact]
    public void CreatesAgentForEachSubdirectory()
    {
        EventFilter.Info()
            .Expect(3, () => GetTargetAgent(ExistingDirPath));
    }

    private TestActorRef<DirectoryReader> GetTargetAgent(string path)
    {
        var filesystem = GetMockFileSystem();
        var target = ActorOfAsTestActorRef<DirectoryReader>(
            Props.Create(
                () =>
                    new DirectoryReader(
                        databaser,
                        filesystem.Object
                        )));
        target.Tell(new HashDirectory(path));
        return target;
    }
}
公共类DirectoryReaderTests:Akka.TestKit.Xunit2.TestKit
{
公共目录阅读测试()
:base(@“akka.loglevel=DEBUG”)
{
var builder=new ContainerBuilder();
builder.RegisterType().As();
var container=builder.Build();//GetTargetAgent(ExistingDirPath));
}
私有TestActorRef GetTargetAgent(字符串路径)
{
var filesystem=GetMockFileSystem();
var目标=Actorofastestatorref(
道具。创造(
() =>
新目录阅读器(
数据库管理员,
文件系统对象
)));
Tell(新HashDirectory(path));
回报目标;
}
}

现在的问题是:我如何告诉TestKit实际使用我的容器进行依赖项注入呢
public class DirectoryReaderTests : Akka.TestKit.Xunit2.TestKit 
{
    public DirectoryReaderTests()
        : base(@"akka.loglevel = DEBUG")
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<FileSystem>().As<IFileSystem>();

        var container = builder.Build();  // <--- how do I use this with TestKit
    }

    [Fact]
    public void CreatesAgentForEachSubdirectory()
    {
        EventFilter.Info()
            .Expect(3, () => GetTargetAgent(ExistingDirPath));
    }

    private TestActorRef<DirectoryReader> GetTargetAgent(string path)
    {
        var filesystem = GetMockFileSystem();
        var target = ActorOfAsTestActorRef<DirectoryReader>(
            Props.Create(
                () =>
                    new DirectoryReader(
                        databaser,
                        filesystem.Object
                        )));
        target.Tell(new HashDirectory(path));
        return target;
    }
}