Отлов ошибок при построении акторов в Akka TestKit - PullRequest
0 голосов
/ 04 августа 2020
• 1000 было бы. В нынешнем виде мне пришлось подключить отладчик и посмотреть, куда он бросил.

Я подумал, что, возможно, смогу создать другого актера, который ведет журнал и, в случае ошибки, отправляет ему сообщение. Однако точки останова, которые я установил в ErrorActor, никогда не срабатывали. Кажется, что RootActor вышел из строя и истекло время ожидания до того, как сообщение было отправлено / получено. Каков рекомендуемый способ обнаружения ошибок в модульных тестах?

Большое спасибо

    [Fact]
        public void CreateRootActor()
        {
            // Arrange
            var props = Props.Create(() => new RootActor());
            Sys.ActorOf(Props.Create( () =>new TestErrorActor(TestLogger)), ActorPaths.ErrorActor.Name); // register my test actor
            
            // Act
            var actor = new TestActorRef<RootActor>(this.Sys, props);

            // Assert
            Assert.IsType<RootActor>(actor.UnderlyingActor);
        }



   public class RootActor : ReceiveActor
    {

         private ITenantRepository tenantRepository;

        public RootActor(ILifetimeScope lifetimeScope)
        {
            try
            {
                this.tenantRepository = lifetimeScope.Resolve<ITenantRepository>(); // this throws

            }
            catch (Exception e)
            {
                Context.ActorSelection(ErrorActor.Name).Tell(new TestErrorActor.RaiseError(e));
                throw;
            }
            .... 

1 Ответ

0 голосов
/ 05 августа 2020

Я обошел это с помощью Akka.Logger.Serilog и try / catch в RootActor. Я удалил ErrorActor.

...