Как исправить DefaultHttpContext.Response бросая исключение NullReferenceException в ядре C # ASP.Net - PullRequest
0 голосов
/ 20 мая 2019

Я изучал, как создать API, и я сделал Global Exceptions Handler. После этого я сделал модульные тесты для этого. Я сделал это (не копировать-вставить), но я написал построчно, как это было на этом сайте http://anthonygiretti.com/2018/09/04/asp-net-core-2-1-middlewares-part2-unit-test-a-custom-middleware/ и мой context.Response.Body равен нулю, потому что context.Response равен нулю.

Я пытался найти что-то в интернете, но не смог: (.

    private DefaultHttpContext GetHttpContext()
    {
        var context = new DefaultHttpContext();
        context.Response.Body = new MemoryStream();
        context.Response.Body.Seek(0, SeekOrigin.Begin);
        return context;
    }
    [Fact]
    public async void A()
    {
        //Arrange
        var middleware = new ExceptionMiddleware((HttpContext innerHttpContext) =>
        {
            throw new FakeApiException();
        });
        var context = GetHttpContext();
        //Act
        await middleware.InvokeAsync(context);
        var reader = new StreamReader(context.Response.Body);
        string streamText = await reader.ReadToEndAsync();
        ErrorDetails objResponse = JsonConvert.DeserializeObject<ErrorDetails>(streamText);
        //Assert
        Assert.Equal("Internal Server Error from the custom middleware", objResponse.Message);
    }

Я ожидаю, что Ответ "context" не будет нулевым, и мой тест будет пройден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...