public async Task Should_Invoke_Delegate()
        {
            RequestDelegateMock
            .Setup(x => x.RequestDelegate(It.IsAny <HttpContext>()))
            .Returns(Task.FromResult(0));
            ExceptionMiddleware = new ExceptionMiddleware(RequestDelegateMock.Object.RequestDelegate);
            await ExceptionMiddleware.InvokeAsync(new DefaultHttpContext());

            RequestDelegateMock.Verify(x => x.RequestDelegate(It.IsAny <HttpContext>()), Times.Once);
        }
        public async Task Should_return_exception_message()
        {
            RequestDelegateMock
            .Setup(x => x.RequestDelegate(It.IsAny <HttpContext>()))
            .Returns(Task.FromException(new Exception()));
            ExceptionMiddleware = new ExceptionMiddleware(RequestDelegateMock.Object.RequestDelegate);

            await ExceptionMiddleware.InvokeAsync(HttpContext);

            Assert.AreEqual("application/json", HttpContext.Response.ContentType);
            Assert.AreEqual((int)HttpStatusCode.InternalServerError, HttpContext.Response.StatusCode);
        }
        public async Task Should_return_bad_request_message()
        {
            RequestDelegateMock
            .Setup(x => x.RequestDelegate(It.IsAny <HttpContext>()))
            .Returns(Task.FromException(new BadRequestException("Error")));
            ExceptionMiddleware = new ExceptionMiddleware(RequestDelegateMock.Object.RequestDelegate);


            await ExceptionMiddleware.InvokeAsync(HttpContext);

            Assert.AreEqual((int)HttpStatusCode.BadRequest, HttpContext.Response.StatusCode);
        }