How I can mock HttpWebResponse with the property CharacterSet for unit test? In my code I am checking for HttpWebResponse.CharacterSet like below. I could mock HttpWebResponse but getting null reference exception while getting the property "CharacterSet". Please note I cannot setup "CharacterSet" in the mock as it is a read-only and non virtual property. I am using .Net 4.6.1
public string ReadResponse(HttpWebResponse response)
{
var encoding = (response.CharacterSet == null || response.CharacterSet == "") ? Encoding.UTF8 : Encoding.GetEncoding(response.CharacterSet);
using (var stream = response.GetResponseStream())
{
var reader = new StreamReader(stream, encoding);
var responseString = reader.ReadToEnd();
return responseString;
}
}
And the mock I have wriiten for HttpWebReponse is,
public static HttpWebResponse CreateRequestWithResponse(string responseContent)
{
var response = new Mock<HttpWebResponse>(MockBehavior.Loose);
var responseStream = new MemoryStream(Encoding.UTF8.GetBytes(responseContent));
response.Setup(c => c.StatusCode).Returns(HttpStatusCode.OK);
response.Setup(c => c.ContentType).Returns("text/xml;charset=\"utf-8\"");
response.Setup(c => c.GetResponseStream()).Returns(responseStream);
var request = new Mock<HttpWebRequest>();
request.Setup(a => a.ContentType).Returns("text/xml;charset=\"utf-8\"");
request.Setup(s => s.GetResponse()).Returns(response.Object);
return response.Object;
}
This is the error I am getting while getting "CharacterSet",