Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Akka.NET测试套件获取超时错误_C#_Akka.net_Akka Testkit - Fatal编程技术网

C# Akka.NET测试套件获取超时错误

C# Akka.NET测试套件获取超时错误,c#,akka.net,akka-testkit,C#,Akka.net,Akka Testkit,我正在用NUnit测试。我做错了什么 public class ZipActor : ReceiveActor { public ZipActor() { Receive<ZipMessage>(message => HandleZipMessage(message)); } private void HandleZipMessage(ZipMessage message) { Console.Write

我正在用NUnit测试。我做错了什么

public class ZipActor : ReceiveActor
{
    public ZipActor()
    {
        Receive<ZipMessage>(message => HandleZipMessage(message));
    }

    private void HandleZipMessage(ZipMessage message)
    {
        Console.WriteLine(string.Format("Received: {0} for {1}", typeof(ZipMessage).Name, message.SourceFolderPath));
    }
}

public class ZipMessage
{
    public readonly string SourceFolderPath;

    public ZipMessage(string sourceFolderPath)
    {
        SourceFolderPath = sourceFolderPath;
    }
}

[TestFixture]
public class ZipActorTests : TestKit
{
    [Test]
    public void ZipActor_WhenSentZipMessage_ShouldReceiveZipMessage()
    {
        var actor = Sys.ActorOf(Props.Create(() => new ZipActor()));
        string path = "some path";

        actor.Tell(new ZipMessage(path));

        ExpectMsg<ZipMessage>();
    }
}
公共类ZipActor:ReceiveActor
{
公共ZipActor()
{
接收(消息=>HandleZipMessage(消息));
}
私有无效HandleZipMessage(ZipMessage消息)
{
WriteLine(string.Format(“Received:{0}表示{1}”),typeof(ZipMessage.Name,message.SourceFolderPath));
}
}
公共类ZipMessage
{
公共只读字符串SourceFolderPath;
公共ZipMessage(字符串sourceFolderPath)
{
SourceFolderPath=SourceFolderPath;
}
}
[测试夹具]
公共类ZipActorTests:TestKit
{
[测试]
公共无效ZipActor_何时发送ZipMessage_应接收ZipMessage()
{
var actor=Sys.ActorOf(Props.Create(()=>newzipactor());
string path=“some path”;
Tell(新ZipMessage(path));
ExpectMsg();
}
}
我得到这个错误:

失败:等待CloudBackupActors.Messages.ZipMessage类型的消息时超时00:00:03

这是我在NUnit的解决方案输出中得到的。 已收到:某些路径的ZipMessage
[警告][16/11/2015 18:46:37][线程0012][akka://test/user]死信[akka://test/user]到[akka://test/user]: : [akka://test/user/$b],ExistenceConfirmed=True,AddressTerminated=False>

您误解了ExpectMsg()的主题是哪个参与者。正在
TestActor
上调用
ExpectMsg
调用,它是
TestKit
测试中所有消息的默认/隐式发送方

因此,错误是因为您告诉
TestKit
TestActor
应该期望一条
ZipMessage
。要明确的是,正如所写的那样,
TestActor
应该得到一条
ZipMessage
。这并不是说ZipActor应该得到这个消息。您点击的超时是默认值:
TestActor
应用于其
ExpectMsg
调用的03超时

要通过现在设置的测试,您需要从
ZipActor
内部的
Sender.Tell(new-ZipMessage(“foopath”)

公平地说,
TestKit
的项目文档目前缺失(截至2015年11月16日)。我们现在正在写它们,他们应该在下周出版。
现在我建议你去看看(披露:我写的)。我想这会让你对
TestKit
的实际工作原理有一个非常深入的了解。

好吧,所以我在这里的词条是错误的,当我实际添加我遗漏的HandleZipMessage的结束行时,这是有意义的。我的测试实际上类似于这篇文章。因此,我需要做的是这样,这是有效的。:)

公共类ZipActor:ReceiveActor
{
公共ZipActor()
{
接收(消息=>HandleZipMessage(消息));
}
私有无效HandleZipMessage(ZipMessage消息)
{
WriteLine(string.Format(“Received:{0}表示{1}”),typeof(ZipMessage.Name,message.SourceFolderPath));
//TODO:压缩操作
Context.Parent.Tell(新的IncrementFolderCountMessage());
}
}
公共类ZipMessage
{
公共只读字符串SourceFolderPath;
公共ZipMessage(字符串sourceFolderPath)
{
SourceFolderPath=SourceFolderPath;
}
}
[测试夹具]
公共类ZipActorTests:TestKit
{
[测试]
收到ZIP时的公共无效ZipActor应增加FolderCount()
{
//安排
//(使ZipActor成为遗嘱人的子女)
var props=props.Create(()=>new ZipActor());
var actor=actorofastestactoref(道具、测试者);
string path=“some path”;
//表演
Tell(新ZipMessage(path));
//断言
ExpectMsg();
}
}

嗨,安德鲁,我确实读过你的帖子,但我读得不够仔细!我现在发布了自己的解决方案。:)
public class ZipActor : ReceiveActor
{
    public ZipActor()
    {
        Receive<ZipMessage>(message => HandleZipMessage(message));
    }

    private void HandleZipMessage(ZipMessage message)
    {
        Console.WriteLine(string.Format("Received: {0} for {1}", typeof(ZipMessage).Name, message.SourceFolderPath));
        // TODO: Zip operations
        Context.Parent.Tell(new IncrementFolderCountMessage());
    }
}

public class ZipMessage
{
    public readonly string SourceFolderPath;

    public ZipMessage(string sourceFolderPath)
    {
        SourceFolderPath = sourceFolderPath;
    }
}

[TestFixture]
public class ZipActorTests : TestKit
{
    [Test]
    public void ZipActor_WhenReceivedZip_ShouldIncrementFolderCount()
    {
        // Arrange
        // (make ZipActor child of TestActor)
        var props = Props.Create(() => new ZipActor());
        var actor = ActorOfAsTestActorRef<ZipActor>(props, TestActor);

        string path = "some path";

        // Act
        actor.Tell(new ZipMessage(path));

        // Assert
        ExpectMsg<IncrementFolderCountMessage>();
    }
}