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