I'm mocking the WebOperationContext class over wrapper for unit testing (using Moq). But I need to execute CreateTextResponse(...) method from WebOperationContext class in my mocked context for Message generation. Could you please give me any recommendation how to do that?
EDIT: Below is the current mock I am using for the WebOperationContext. However, I can't get to implement CreateTextResponse/CreateStreamResponse.
public IAsyncResult BeginGetData(AsyncCallback asyncCallback, object asyncState)
public Message EndGetData(IAsyncResult asyncResult)
public class OperationContextMock : IOperationContext
{
public HttpCookieCollection Cookies { get; set; }
public Message CreateStreamResponse(Action<System.IO.Stream> streamWriter, string contentType)
{
throw new NotImplementedException();
}
public Message CreateTextResponse(string text, string contentType)
{
// How to mock this method so that it returns a Message object?
}
public string LookupRequestParameter(RequestParameter requestParameter)
{
throw new NotImplementedException();
}
public NameValueCollection QueryParameters { get; set; }
public NameValueCollection RequestHeaders { get; set; }
public Uri RequestUri { get; set; }
public string ResponseContentType { get; set; }
public string ResponseLocation { get; set; }
public HttpStatusCode ResponseStatusCode { get; set; }
public CatalogServiceOperationContextMock()
{
this.ResponseStatusCode = HttpStatusCode.OK;
}
}
CreateTextResponse
is not virtual so you can't mock it with moq. You'll probably want to create a wrapper aroundCreateTextResponse
. You can mock the wrapper during unit testing, but delegate to the actualWebOperationContext
at runtime.