我有代理,它将读取目录 X 并为它找到的每个子目录创建子代理。
对于我的测试环境,我使用了 System.IO.Abstractions 包,它创建了 IFileSystem 接口及其实现(供正常程序使用)。
代理(用于 dir X)使用 Autofac DI 创建子代理(因为我们需要为它们提供 IFileSystem 依赖,未来可能还会更多):
var props = Context.DI().Props<DirectoryReader>();
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;
}
}
现在的问题是:我如何告诉 TestKit 实际使用我的容器进行依赖注入