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;