【发布时间】:2018-02-04 07:43:11
【问题描述】:
我正在尝试编写一个简单的 Akka.NET 流。来源是IActorRef。接收器是ISubscriber。我正在使用 TestKit 将其实现为单元测试:
[Fact]
public void AkkaStreams_ActorSourcePublisherSink_Works()
{
using (var materializer = Sys.Materializer())
{
var probe = CreateTestProbe();
var source = Source.ActorRef<HandlerErrorEvent>(10, OverflowStrategy.DropNew);
var subscriber = new Mock<ISubscriber<HandlerErrorEvent>>();
var sink = Sink.FromSubscriber<HandlerErrorEvent>(subscriber.Object);
var graph = source.ToMaterialized(sink, Keep.Both);
var (actor, publisher) = graph.Run(materializer);
subscriber.Verify(s => s.OnSubscribe(It.IsAny<ISubscription>()));
var evnt = new HandlerErrorEvent("", HandlerResult.NotHandled);
actor.Tell(evnt, ActorRefs.Nobody);
base.AwaitCondition(() =>
{
try
{
subscriber.Verify(s => s.OnNext(It.IsAny<HandlerErrorEvent>()));
return true;
}
catch(MockException)
{
return false;
}
});
}
}
对OnSubscribe 方法的初始Verify 调用顺利通过,但模拟订阅者从未收到对OnNext 的调用。
我做错了什么?
以netcoreapp2.0 运行。参考资料:
"Akka.TestKit.Xunit2" Version="1.3.2"
"Microsoft.NET.Test.Sdk" Version="15.5.0"
"Moq" Version="4.8.0-rc1"
"xunit" Version="2.3.1"
"xunit.runner.visualstudio" Version="2.3.1"
"dotnet-xunit" Version="2.3.1"
【问题讨论】:
标签: c# .net-core akka.net akka.net-streams