Я изучал, как создать 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" не будет нулевым, и мой тест будет пройден.