我坚持如何设置contentencoding属性,因为它不能通过moq覆盖。
我目前有以下内容:
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
知道如何模仿这个属性吗?
答案 0 :(得分:2)
这就是我要做的事情:
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);
添加而不是最后一行。