Перемешивание WebOperationContext.IncomingRequest - PullRequest
3 голосов
/ 19 января 2012

Мне нужно смоделировать WebOperationContext и, в частности, IncomingRequest с заголовком, который присваивает значение Accept, чтобы проверить, что значение читается правильно, а OutgoingReponse.ContentType соответствует требуемому формату.Я использую WCFMock, и все было в порядке с общим тестированием, но я не могу понять, что мне нужно сделать, чтобы высмеивать Incoming Response.

Свойство Accept доступно только для чтения, поэтому назначение напрямуюне бываетЯ попытался добавить установщик в 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, и я стараюсь избегать этого, если это возможно.

...