我需要模拟 WebOperationContext ,特别是 IncomingRequest ,它带有一个分配 Accept 值的标头,以测试该值是否被正确读取并且 OutgoingReponse.ContentType 与所需格式匹配。我正在使用 WCFMock 并且在一般测试中一切都很好,但我无法理解我需要做什么来模拟传入响应。
Accept 属性是只读的,因此不能直接分配。我已经尝试将 setter 添加到 WCFMock.IncomingWebRequestContextWrapper ,因为它继承自 System.SericeModel.Web.IncomingWebRequestContext ,所以它可以预见会爆炸。
所以需要这样的东西
[Test]
public void SerializeObjectToXMLTest()
{
var fake = new FakeRest();
var mockContext = new Mock<IWebOperationContext> { DefaultValue = DefaultValue.Mock };
using (new MockedWebOperationContext(mockContext.Object))
{
// WHAT I WOULD LOVE:
MockedWebOperationContext.Current.IncomingRequest.Accept = "application/json";
fake.SetResponseContentType();
}
// Assert
mockContext.VerifySet(c => c.OutgoingResponse.ContentType, "application/json");
}
恐怕我必须完全模拟 WebRequest,如果可能的话,我希望避免这种情况。