internal UnitTestFramework( ISutCreator sutCreator, ITellWaiter tellWaiter, IWaiter childWaiter, IWaiter exceptionWaiter, IDependencyResolverAdder resolverAdder, ITestProbeDependencyResolverAdder testProbeDependencyResolverAdder, ITestProbeCreator testProbeCreator, IResolvedTestProbeStore resolvedProbeStore, ITestProbeChildActorCreator testProbeChildActorCreator, ITestProbeChildHandlersMapper testProbeChildHandlersMapper, ISutSupervisorStrategyGetter sutSupervisorStrategyGetter, ITestProbeParentActorCreator testProbeParentActorCreator, IDelayer delayer, ImmutableDictionary <Type, Func <object, object> > parentHandlers, ImmutableDictionary <(Type, Type), Func <object, object> > childHandlers,
public TestBase() : base(AkkaConfig.Config) { Func <Type> generateType = TestHelper.GetRandomTypeGenerator(); // Create mocks SutCreatorMock = new Mock <ISutCreator>(); TellWaiterMock = new Mock <ITellWaiter>(); ChildWaiterMock = new Mock <IWaiter>(); ExceptionWaiterMock = new Mock <IWaiter>(); DependencyResolverAdderMock = new Mock <IDependencyResolverAdder>(); TestProbeDependencyResolverAdderMock = new Mock <ITestProbeDependencyResolverAdder>(); ResolvedTestProbeStoreMock = new Mock <IResolvedTestProbeStore>(); TestProbeChildActorCreatorMock = new Mock <ITestProbeChildActorCreator>(); TestProbeCreatorMock = new Mock <ITestProbeCreator>(); TestProbeHandlersMapperMock = new Mock <ITestProbeChildHandlersMapper>(); TestProbeChildActorMock = new Mock <ITestProbeChildActor>(); SutSupervisorStrategyGetterMock = new Mock <ISutSupervisorStrategyGetter>(); TestProbeParentActorCreatorMock = new Mock <ITestProbeParentActorCreator>(); TestProbeParentActorMock = new Mock <ITestProbeParentActor>(); DelayerMock = new Mock <IDelayer>(); // Create objects passed into sut constructor SutCreator = SutCreatorMock.Object; TellWaiter = TellWaiterMock.Object; ChildWaiter = ChildWaiterMock.Object; ExceptionWaiter = ChildWaiterMock.Object; DependencyResolverAdder = DependencyResolverAdderMock.Object; TestProbeDependencyResolverAdder = TestProbeDependencyResolverAdderMock.Object; TestProbeCreator = TestProbeCreatorMock.Object; ResolvedTestProbeStore = ResolvedTestProbeStoreMock.Object; TestProbeChildActorCreator = TestProbeChildActorCreatorMock.Object; TestProbeHandlersMapper = TestProbeHandlersMapperMock.Object; SutSupervisorStrategyGetter = SutSupervisorStrategyGetterMock.Object; TestProbeParentActorCreator = TestProbeParentActorCreatorMock.Object; Delayer = DelayerMock.Object; ParentHandlers = ImmutableDictionary <Type, Func <object, object> > .Empty .Add((generateType()), message => TestHelper.Generate <object>()); ChildHandlers = ImmutableDictionary <(Type, Type), Func <object, object> > .Empty .Add((generateType(), generateType()), message => TestHelper.Generate <object>()); Decider = exception => TestHelper.GenerateEnum <Directive>(); Props = Props.Create <DummyActor>(); PropsWithSupervisorStrategy = Props .Create <DummyActor>() .WithSupervisorStrategy(new AllForOneStrategy( TestHelper.GenerateNumber(), TestHelper.GenerateNumber(), exception => TestHelper.Generate <Directive>())); ExpectedChildCount = TestHelper.GenerateNumber(); ExpectedExceptionCount = TestHelper.GenerateNumber(); // Create objects passed into sut methods Message = TestHelper.Generate <object>(); ChildName = TestHelper.GenerateString(); ChildNameWithoutSupervisor = TestHelper.GenerateString(); Sender = new Mock <IActorRef>().Object; DelayDuration = TestHelper.Generate <TimeSpan>(); // Create objects returned by mocks MappedChildHandlers = ImmutableDictionary <Type, ImmutableDictionary <Type, Func <object, object> > > .Empty .Add(generateType(), ImmutableDictionary <Type, Func <object, object> > .Empty .Add(generateType(), mess => TestHelper.Generate <object>())); SutActor = ActorOfAsTestActorRef <DummyActor>(); ResolvedType = generateType(); ResolvedTestProbe = CreateTestProbe(); ResolvedSupervisorStrategy = new AllForOneStrategy( TestHelper.GenerateNumber(), TestHelper.GenerateNumber(), exception => TestHelper.Generate <Directive>()); SutSupervisorStrategy = new OneForOneStrategy( TestHelper.GenerateNumber(), TestHelper.GenerateNumber(), exception => TestHelper.Generate <Directive>()); TestProbeParentActor = TestProbeParentActorMock.Object; TestProbeParentActorTestProbe = CreateTestProbe(); TestProbeParentActorRef = TestProbeParentActorTestProbe.Ref; TestProbeParentActorUnhandledExceptions = TestHelper.GenerateMany <Exception>(() => TestHelper.GenerateException()); // Set up mocks TestProbeParentActorMock .SetupGet(actor => actor.Ref) .Returns(TestProbeParentActorRef); TestProbeParentActorMock .SetupGet(actor => actor.TestProbe) .Returns(TestProbeParentActorTestProbe); TestProbeParentActorMock .SetupGet(actor => actor.UnhandledExceptions) .Returns(TestProbeParentActorUnhandledExceptions); TestProbeParentActorCreatorMock .SetupSequence(creator => creator.Create(TestProbeCreator, ExceptionWaiter, this, Decider, ParentHandlers)) .Returns(TestProbeParentActor) .Returns(Mock.Of <ITestProbeParentActor>()); SutCreatorMock .Setup(creator => creator.Create <DummyActor>( ChildWaiterMock.Object, this, Props, ExpectedChildCount, TestProbeParentActorRef)) .Returns(() => SutActor); ResolvedTestProbeStoreMock .Setup(store => store.FindResolvedType(SutActor, ChildName)) .Returns(() => ResolvedType); ResolvedTestProbeStoreMock .Setup(store => store.FindResolvedTestProbe(SutActor, ChildName)) .Returns(() => ResolvedTestProbe); ResolvedTestProbeStoreMock .Setup(store => store.FindResolvedSupervisorStrategy(SutActor, ChildName)) .Returns(() => ResolvedSupervisorStrategy); ResolvedTestProbeStoreMock .Setup(store => store.FindResolvedSupervisorStrategy(SutActor, ChildNameWithoutSupervisor)) .Returns(() => null); TestProbeHandlersMapperMock .Setup(mapper => mapper.Map(ChildHandlers)) .Returns(() => MappedChildHandlers); SutSupervisorStrategyGetterMock .Setup(getter => getter.Get(SutActor.UnderlyingActor)) .Returns(() => SutSupervisorStrategy); }