public static class TestingExtensions { public static ResourceResponse<T> ToResourceResponse<T>(this T resource, HttpStatusCode statusCode, IDictionary<string, string> responseHeaders = null) where T : Resource, new() { var resourceResponse = new ResourceResponse<T>(resource); var documentServiceResponseType = Type.GetType("Microsoft.Azure.Documents.DocumentServiceResponse, Microsoft.Azure.DocumentDB.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); var flags = BindingFlags.NonPublic | BindingFlags.Instance; var headers = new NameValueCollection { { "x-ms-request-charge", "0" } }; if (responseHeaders != null) { foreach (var responseHeader in responseHeaders) { headers[responseHeader.Key] = responseHeader.Value; } } var headersDictionaryType = Type.GetType("Microsoft.Azure.Documents.Collections.DictionaryNameValueCollection, Microsoft.Azure.DocumentDB.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); var headersDictionaryInstance = Activator.CreateInstance(headersDictionaryType, headers); var arguments = new [] { Stream.Null, headersDictionaryInstance, statusCode, null }; var documentServiceResponse = documentServiceResponseType.GetTypeInfo().GetConstructors(flags)[0] .Invoke(arguments); var responseField = typeof(ResourceResponse<T>).GetTypeInfo().GetField("response", flags); responseField?.SetValue(resourceResponse, documentServiceResponse); return resourceResponse; } public static FeedResponse<T> ToFeedResponse<T>(this IQueryable<T> resource, IDictionary<string, string> responseHeaders = null) { var feedResponseType = Type.GetType("Microsoft.Azure.Documents.Client.FeedResponse`1, Microsoft.Azure.DocumentDB.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); var flags = BindingFlags.NonPublic | BindingFlags.Instance; var headers = new NameValueCollection { { "x-ms-request-charge", "0" }, { "x-ms-activity-id", Guid.NewGuid().ToString() } }; if (responseHeaders != null) { foreach (var responseHeader in responseHeaders) { headers[responseHeader.Key] = responseHeader.Value; } } var headersDictionaryType = Type.GetType("Microsoft.Azure.Documents.Collections.DictionaryNameValueCollection, Microsoft.Azure.DocumentDB.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); var headersDictionaryInstance = Activator.CreateInstance(headersDictionaryType, headers); var arguments = new object[] { resource, resource.Count(), headersDictionaryInstance, false, null, null, null }; if (feedResponseType != null) { var t = feedResponseType.MakeGenericType(typeof(T)); var feedResponse = t.GetTypeInfo().GetConstructors(flags)[0] .Invoke(arguments); return (FeedResponse<T>)feedResponse; } return new FeedResponse<T>(); } }