模拟 WebResponse 时设置 ContentEncoding
Set ContentEncoding when mocking WebResponse
我一直在研究如何设置内容编码 属性,因为它不能通过最小起订量覆盖。
我目前有:
var expected = "dfgdfgdfgdfg";
var expectedBytes = Encoding.UTF8.GetBytes(expected);
var responseStream = new MemoryStream();
responseStream.Write(expectedBytes, 0, expectedBytes.Length);
responseStream.Seek(0, SeekOrigin.Begin);
var response = new Mock<HttpWebResponse>();
response.Setup(c => c.GetResponseStream()).Returns(responseStream);
response.Setup(c => c.ContentEncoding).Returns("UTF8");
但我得到以下异常:
Result Message: Invalid setup on a non-virtual (overridable in VB) member: c => c.ContentEncoding
知道如何模拟这个 属性 吗?
这就是我要做的:
var webHeaderCollectionFieldInfo = typeof (HttpWebResponse).GetField("m_HttpResponseHeaders",
BindingFlags.Instance | BindingFlags.NonPublic);
var webHeaderCollection = new WebHeaderCollection();
webHeaderCollection.Set("Content-Encoding", "cheese");
webHeaderCollectionFieldInfo.SetValue(response.Object, webHeaderCollection);
添加它而不是最后一行。
我一直在研究如何设置内容编码 属性,因为它不能通过最小起订量覆盖。
我目前有:
var expected = "dfgdfgdfgdfg";
var expectedBytes = Encoding.UTF8.GetBytes(expected);
var responseStream = new MemoryStream();
responseStream.Write(expectedBytes, 0, expectedBytes.Length);
responseStream.Seek(0, SeekOrigin.Begin);
var response = new Mock<HttpWebResponse>();
response.Setup(c => c.GetResponseStream()).Returns(responseStream);
response.Setup(c => c.ContentEncoding).Returns("UTF8");
但我得到以下异常:
Result Message: Invalid setup on a non-virtual (overridable in VB) member: c => c.ContentEncoding
知道如何模拟这个 属性 吗?
这就是我要做的:
var webHeaderCollectionFieldInfo = typeof (HttpWebResponse).GetField("m_HttpResponseHeaders",
BindingFlags.Instance | BindingFlags.NonPublic);
var webHeaderCollection = new WebHeaderCollection();
webHeaderCollection.Set("Content-Encoding", "cheese");
webHeaderCollectionFieldInfo.SetValue(response.Object, webHeaderCollection);
添加它而不是最后一行。