public async Task Run()
        {
            foreach (var @event in Given())
            {
                Aggregate ??= (TEventSourcedAggregate)Activator.CreateInstance(typeof(TEventSourcedAggregate), true) !;
                Aggregate.ApplyEvent(@event);
            }

            var services = Testing.GetServices();

            ConfigureServices(services);
            var serviceProvider = services.BuildServiceProvider();
            var mediator        = serviceProvider.GetRequiredService <IMediator>();

            try
            {
                await mediator.Send(When());
            }
            catch (Exception e)
            {
                IsErrorExpected(e).Should().BeTrue();
                return;
            }

            IsErrorExpected().Should().BeFalse();
            Aggregate.Should().NotBeNull();
            Aggregate !.UncommittedEvents.Should().BeEquivalentTo(Then(), options => options.RespectingRuntimeTypes());
        }