Actualmente estoy experimentando para encontrar la forma adecuada de crear un contexto HTTP para fines de prueba unitaria. Mientras examinaba los tipos de flujo creados, me sorprendió que lo siguiente devolviera un tipo de System.IO.Stream+NullStream .
var context = new DefaultHttpContext(); var requestBodyType = context.Request.Body.GetType().FullName; var responseBodyType = context.Response.Body.GetType().FullName; Si el caso de prueba lo requiere, simplemente reemplazaría la transmisión con un MemoryStream y luego actuaría en consecuencia.
var memoryStream = new MemoryStream(); var context = new DefaultHttpContext(); context.Response.Body = memoryStream; Hasta aquí todo bien. Pero, ¿qué es exactamente System.IO.Stream+NullStream ? Hubiera esperado encontrar un tipo de NullStream en la documentación, pero no pude encontrar tal cosa.
Es de tipo interno .
Subclasifica Stream y se expone como Stream.Null .
Como puede ver en la implementación, simplemente descarta los datos escritos en él y no devuelve ningún dato si se le solicita.
La jerarquía para System.IO.Stream+NullStream se ve así
public abstract class Stream { private sealed class NullStream { } }El + significa que es una clase secundaria anidada de Stream