Azure.Core.ResponseHeaders 在单元测试中
Azure.Core.ResponseHeaders in unit testing
我正在尝试将新的 Azure.Storage v12 SDK 和 运行 实施到单元测试问题中。调用 Azure REST 的方法 API return a Azure.Response<T>
其中包含方法 GetRawResponse()
到 return 和 Azure.Response
.
实现依赖于使用 Azure.Response.Headers
中的 headers,它是 Azure.Core.ResponseHeaders 类型的结构。我可以创建它的一个实例,但是在迭代它时它会抛出空引用异常。
using Azure.Core;
var headers = new ResponseHeaders();
var headers.GetEnumerator(); //throws null reference error
据我所知 object 没有其他构造函数,当通过反射获取其成员时,我也看不到它可以迭代的属性或字段。
是否可以创建一个能够使用 Moq 迭代或模拟它的实例?
解决了。显然它使用了一个名为 _response
的私有字段,该字段具有检索 Enumerable 的方法。使用反射我将私有字段设置为 MyResponse
的实例,它继承自抽象 Azure.Response
并将方法覆盖为 return IEnumerable<HttpHeader>
.
object headers = new ResponseHeaders();
var field = headers.GetType().GetField("_response", BindingFlags.NonPublic | BindingFlags.Instance);
field.SetValue(headers, new MyResponse());
var responseHeaders = (ResponseHeaders)headers;
我正在尝试将新的 Azure.Storage v12 SDK 和 运行 实施到单元测试问题中。调用 Azure REST 的方法 API return a Azure.Response<T>
其中包含方法 GetRawResponse()
到 return 和 Azure.Response
.
实现依赖于使用 Azure.Response.Headers
中的 headers,它是 Azure.Core.ResponseHeaders 类型的结构。我可以创建它的一个实例,但是在迭代它时它会抛出空引用异常。
using Azure.Core;
var headers = new ResponseHeaders();
var headers.GetEnumerator(); //throws null reference error
据我所知 object 没有其他构造函数,当通过反射获取其成员时,我也看不到它可以迭代的属性或字段。
是否可以创建一个能够使用 Moq 迭代或模拟它的实例?
解决了。显然它使用了一个名为 _response
的私有字段,该字段具有检索 Enumerable 的方法。使用反射我将私有字段设置为 MyResponse
的实例,它继承自抽象 Azure.Response
并将方法覆盖为 return IEnumerable<HttpHeader>
.
object headers = new ResponseHeaders();
var field = headers.GetType().GetField("_response", BindingFlags.NonPublic | BindingFlags.Instance);
field.SetValue(headers, new MyResponse());
var responseHeaders = (ResponseHeaders)headers;