将 AcceptType 添加到 HttpRequestBase 的 Mock

Add AcceptType to Mock of HttpRequestBase

这里是一个简单的问题。我正在尝试模拟 HttpRequestBase 并添加两个 AcceptTypes。

我认为这是方法,但事实并非如此,谷歌搜索/四处挖掘并没有向我透露任何信息。

var request = new Mock<HttpRequestBase>();
   request.Setup(p => p.HttpMethod).Returns("POST");
   request.Setup(a => a.Headers.Add("AcceptType", "ABC"));
   request.Setup(z => z.Headers.Add("AcceptType", "QWE"));

编辑

根据 dee 的回答,我明白了我是如何误解 Mock setup / Returns 组合的。

所以我的最终答案如下所示,但完全由给出的答案得出。

new string[] fakeHeaders = new string[]
{ "ABC","QWE" };

Mock<HttpRequestBase> requestBaseMock = new Mock<HttpRequestBase>();
requestBaseMock.Setup(r => r.HttpMethod).Returns("POST");
requestBaseMock.Setup(r => r.Headers).Returns(fakeHeaders);

您是否尝试过先从 Setup 中创建 假 headers collection 然后 return 12=]?

NameValueCollection fakeHeaders = new NameValueCollection();
fakeHeaders.Add("AcceptType", "ABC");
fakeHeaders.Add("AcceptType", "QWE");

Mock<HttpRequestBase> requestBaseMock = new Mock<HttpRequestBase>();
requestBaseMock.Setup(r => r.HttpMethod).Returns("POST");
requestBaseMock.Setup(r => r.Headers).Returns(fakeHeaders);