- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用下面 URL 中提供的代码片段来实例化 ResourceResponse 以进行单元测试模拟目的
https://github.com/Azure/azure-cosmosdb-dotnet/issues/342#issuecomment-367827999
但是我在给定行遇到以下错误:
var documentServiceResponse = Activator.CreateInstance(documentServiceResponseType, flags, null, arguments, null);
System.MissingMethodException: 'Constructor on type 'Microsoft.Azure.Documents.DocumentServiceResponse' not found.'
最终我想模拟像 RequestCharge 这样的 Response 属性。
请建议如何实现这一目标。
提前致谢
最佳答案
您可以通过添加 Cosmonaut's TestingExtensions 来做到这一点
这是一个扩展方法,可将任何对象转换为 ResourceReponse
。
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=1.9.1.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 arguments = new object[] { Stream.Null, headers, statusCode, null };
var documentServiceResponse =
documentServiceResponseType.GetTypeInfo().GetConstructors(flags)[0].Invoke(arguments);
var responseField = typeof(ResourceResponse<T>).GetTypeInfo().GetField("response", BindingFlags.NonPublic | BindingFlags.Instance);
responseField?.SetValue(resourceResponse, documentServiceResponse);
return resourceResponse;
}
这仅适用于 2.0.0 之前的 SDK 版本。
对于 2.0.0 后的版本,请使用此版本。
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;
}
您可以阅读有关 CosmosDB C# 代码单元测试的更多信息 here
关于c# - Azure Cosmos/Document DB ResourceResponse<Document> 使用反射错误进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52276063/
我需要在 portlet serveResource() 方法的响应中返回一些特殊的拉丁字母(例如 á)。我尝试过以下方法: response.setCharacterEncoding("ISO-88
我正在尝试模拟一个返回 ResourceResponse 的调用,但我无法实例化该类型。是否有可以实例化它的工厂类或其他方式? 编辑 var response = new ResourceRespon
我想通过实现 AbstractResource 使用 Wicket 下载 CSV 文件。它看起来像这样: public class ExportCsvFileResource extends Abst
我正在使用 Microsoft Fakes 单元测试框架来测试一些查询 DocumentDB 数据库的方法。 DocumentClient类有几种用于查询 DocDB 的方法(例如 CreateDoc
我正在使用 Microsoft Fakes 单元测试框架来测试一些查询 DocumentDB 数据库的方法。 DocumentClient类有几种用于查询 DocDB 的方法(例如 CreateDoc
当生成 Excel 工作表时发生错误时,我试图将我的请求转发到错误页面。下面是示例代码。我不确定为什么在抛出异常时它没有被转发到错误页面,它显示空白页面但肯定不会转到我的错误页面。`
我正在使用下面 URL 中提供的代码片段来实例化 ResourceResponse 以进行单元测试模拟目的 https://github.com/Azure/azure-cosmosdb-dotnet
我正在使用下面 URL 中提供的代码片段来实例化 ResourceResponse 以进行单元测试模拟目的 https://github.com/Azure/azure-cosmosdb-dotnet
我是一名优秀的程序员,十分优秀!