使用Azure DocDB为单元测试创建resourcerresponse对象
本文关键字:创建 resourcerresponse 对象 单元测试 Azure DocDB 使用 | 更新日期: 2023-09-27 18:17:03
我正在使用Microsoft Fakes单元测试框架来测试一些对DocumentDB数据库进行查询的方法。
DocumentClient
类有几个方法来查询DocDB(如CreateDocumentAsync()
),返回一个ResourceResponse<Document>
对象包装在一个Task<T>
。
我想为单元测试的目的填充CreateDocumentAsync()
,但是返回类型ResourceResponse<T>
似乎没有公共构造函数,尽管在文档中提到了一个。
我想要完成的一个极其简化的版本是:
[TestMethod]
public async Task MyTest() {
using (ShimsContext.Create()) {
// Arrange
var docClient = new DocumentClient(new Uri("myUri"), "myKey");
ShimDocumentClient.AllInstances.CreateDocumentAsyncUriObjectRequestOptionsBoolean =
(DocumentClient instance, Uri uri, object document, RequestOptions options, bool disableAutomaticGeneration) =>
{
ResourceResponse<Document> response = new ResourceResponse<Document>(); // "error: does not contain a constructor that takes zero arguments"
return response ;
};
// Act
var response = await docClient.CreateDocumentAsync(new Uri("myCollectionUri"), "myDoc");
// Assert
Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
}
}
我如何创建一个自定义的ResrouceResponse<Document>
对象在shimmed方法返回?
如注释所述。v1.10的SDK支持resourcerresponse构造函数不带参数。的包。项目解决方案中的配置应该显示项目正在使用的DocumentDB SDK的版本: