public async Task GivenAQueryWhenAnExceptionOccursThenTheExceptionIsThrownAsync()
        {
            var handler = new TestableSynchronousQueryHandler <Message, SerializableMessage>();

            _ = await Assert.ThrowsAsync <NotImplementedException>(
                () => handler.ExecuteAsync(new SerializableMessage(), CancellationToken.None));
        }
        public async Task GivenNoQueryThenAResultIsReturnedAsync()
        {
            bool wasInvoked = false;
            var  expected   = new SerializableMessage();

            var handler = new TestableSynchronousQueryHandler <SerializableMessage>(execute: () =>
            {
                wasInvoked = true;

                return(expected);
            });

            SerializableMessage?actual = await handler.ExecuteAsync(CancellationToken.None);

            Assert.True(wasInvoked);
            Assert.Equal(expected, actual);
        }