I am currently experimenting to find the proper way of creating an HTTP context for unit testing purposes. While examining the stream types created, I was surprised that the following returns a type of System.IO.Stream+NullStream.
var context = new DefaultHttpContext();
var requestBodyType = context.Request.Body.GetType().FullName;
var responseBodyType = context.Response.Body.GetType().FullName;
If the test case requires it, I'd simply replace the stream with a MemoryStream and then act upon it accordingly.
var memoryStream = new MemoryStream();
var context = new DefaultHttpContext();
context.Response.Body = memoryStream;
So far so good. But what exactly is System.IO.Stream+NullStream? I would have expected to find a type of NullStream in the documentation, but couldn't find such a thing.
It's an internal type.
It sub-classes Stream, and is exposed as Stream.Null.
As you can see from the implementation, it just throws away any data written to it, and doesn't return any data if asked.
The hierarchy for System.IO.Stream+NullStream looks like this
public abstract class Stream {
private sealed class NullStream {
}
}
The + means it's a nested child class of Stream
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With