使用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方法返回?

使用Azure DocDB为单元测试创建resourcerresponse对象

如注释所述。v1.10的SDK支持resourcerresponse构造函数不带参数。的包。项目解决方案中的配置应该显示项目正在使用的DocumentDB SDK的版本: