Beispiel #1
0
        public void TestProbeActorCreator_Create_UsesCorrectTestKitSettings()
        {
            //arrange
            TestProbeActorCreator sut = CreateTestProbeActorFactory();

            //act
            ITestProbeActor result = sut.Create(this);

            //assert
            result.TestProbe.TestKitSettings.Should().BeSameAs(TestKitSettings);
        }
Beispiel #2
0
        public void TestProbeActorCreator_Create_ReturnsTestProbeActor()
        {
            //arrange
            TestProbeActorCreator sut = CreateTestProbeActorFactory();

            //act
            ITestProbeActor result = sut.Create(this);

            //assert
            result.Should().BeOfType <TestProbeActor>();
        }
        public void TestProbeActorCreator_Create_ReturnsTestProbeActor()
        {
            //arrange
            TestProbeActorCreator sut = CreateTestProbeCreator();

            //act
            ITestProbeActor result = sut.Create(
                TestProbeCreatorPassedIntoSut,
                TestKitPassedIntoSut,
                HandlersPassedIntoSut);

            //assert
            AssertionExtensions.Should((object)result).BeSameAs(TestProbeActorReturnedByShim);
        }
Beispiel #4
0
 public void Add(
     IDependencyResolverAdder dependencyResolverAdder,
     ITestProbeActorCreator testProbeActorCreator,
     ITestProbeCreator testProbeCreator,
     IResolvedTestProbeStore resolvedTestProbeStore,
     IChildWaiter childWaiter,
     TestKitBase testKit,
     ImmutableDictionary <Type, ImmutableDictionary <Type, Func <object, object> > > handlers) =>
 dependencyResolverAdder.Add(testKit, actorType =>
 {
     ImmutableDictionary <Type, Func <object, object> > actorHandlers = handlers.GetValueOrDefault(actorType, null);
     ITestProbeActor probeActor = testProbeActorCreator.Create(testProbeCreator, testKit, actorHandlers);
     resolvedTestProbeStore.ResolveProbe(probeActor.ActorPath, actorType, probeActor.TestProbe, probeActor.PropsSupervisorStrategy);
     childWaiter.ResolvedChild();
     return(probeActor.Actor);
 });
        public TestBase() : base(AkkaConfig.Config)
        {
            GenerateType = TestUtils.RandomTypeGenerator();

            // Create mocks
            DependencyResolverAdderMock = new Mock <IDependencyResolverAdder>();
            SutCreatorMock              = new Mock <ISutCreator>();
            ChildTellerMock             = new Mock <IChildTeller>();
            ChildWaiterMock             = new Mock <IChildWaiter>();
            TestProbeCreatorMock        = new Mock <ITestProbeCreator>();
            ResolvedTestProbeStoreMock  = new Mock <IResolvedTestProbeStore>();
            TestProbeActorCreatorMock   = new Mock <ITestProbeActorCreator>();
            TestProbeHandlersMapperMock = new Mock <ITestProbeHandlersMapper>();
            TestProbeActorMock          = new Mock <ITestProbeActor>();

            // Create objects used by mocks
            CallOrder      = new List <string>();
            Supervisor     = CreateTestProbe();
            MappedHandlers = ImmutableDictionary <Type, ImmutableDictionary <Type, Func <object, object> > > .Empty;

            // Create objects passed into sut
            Handlers = ImmutableDictionary <(Type, Type), Func <object, object> > .Empty;
            Props    = Props.Create <BlackHoleActor>();
            ExpectedChildrenCount = TestUtils.Create <int>();
            Message           = TestUtils.Create <object>();
            ChildName         = TestUtils.Create <string>();
            Recipient         = new Mock <IActorRef>().Object;
            Sender            = new Mock <IActorRef>().Object;
            ResolvedType      = GenerateType();
            ResolvedTestProbe = CreateTestProbe();
            Actor             = new BlackHoleActor();
            ActorPath         = TestUtils.Create <ActorPath>();
            ActorTestProbe    = CreateTestProbe();

            // Create objects returned by mocks
            CreatedActor        = ActorOfAsTestActorRef <BlackHoleActor>(Supervisor);
            CreatedActorNoProps = ActorOfAsTestActorRef <BlackHoleActor>(Supervisor);
            TestProbeActor      = TestProbeActorMock.Object;

            // Set up mocks
            DependencyResolverAdderMock
            .Setup(adder => adder.Add(this, It.IsNotNull <Func <Type, ActorBase> >()))
            .Callback((TestKitBase testKit, Func <Type, ActorBase> resolveActor) =>
            {
                ResolveActor = resolveActor;
            });

            SutCreatorMock
            .Setup(creator => creator.Create <BlackHoleActor>(ChildWaiterMock.Object, this, Props, ExpectedChildrenCount, Supervisor))
            .Returns(() => CreatedActor);
            SutCreatorMock
            .Setup(creator => creator.Create <BlackHoleActor>(ChildWaiterMock.Object, this, It.Is <Props>(props => !ReferenceEquals(props, Props) && props.Equals(Props.Create <BlackHoleActor>())), ExpectedChildrenCount, Supervisor))
            .Returns(() => CreatedActorNoProps);

            ChildWaiterMock
            .Setup(waiter => waiter.ResolvedChild())
            .Callback(() => CallOrder.Add(nameof(IChildWaiter.ResolvedChild)));

            TestProbeCreatorMock
            .SetupSequence(creator => creator.Create(this))
            .Returns(Supervisor)
            .Throws(new ArithmeticException("Do not call probe creator twice"));

            ResolvedTestProbeStoreMock
            .Setup(store => store.ResolveProbe(It.IsAny <ActorPath>(), It.IsAny <Type>(), It.IsAny <TestProbe>()))
            .Callback(() => CallOrder.Add(nameof(IResolvedTestProbeStore.ResolveProbe)));
            ResolvedTestProbeStoreMock
            .Setup(store => store.FindResolvedType(TestActor, ChildName))
            .Returns(() => ResolvedType);
            ResolvedTestProbeStoreMock
            .Setup(store => store.FindResolvedTestProbe(TestActor, ChildName))
            .Returns(() => ResolvedTestProbe);

            TestProbeHandlersMapperMock
            .Setup(mapper => mapper.Map(Handlers))
            .Returns((ImmutableDictionary <(Type, Type), Func <object, object> > handlers) => MappedHandlers);

            TestProbeActorCreatorMock
            .Setup(creator => creator.Create(this))
            .Returns(() => TestProbeActor);

            TestProbeActorMock
            .SetupGet(actor => actor.TestProbe)
            .Returns(() => ActorTestProbe);
            TestProbeActorMock
            .SetupGet(actor => actor.ActorPath)
            .Returns(() => ActorPath);
            TestProbeActorMock
            .SetupGet(actor => actor.Actor)
            .Returns(() => Actor);
        }