3

我需要模拟 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,如果可能的话,我希望避免这种情况。

4

0 回答 0