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

Creating ResourceResponse objects for unit tests with Azure DocDB

我正在使用 Microsoft Fakes 单元测试框架来测试一些对 DocumentDB 数据库进行查询的方法。

DocumentClient class 有几种查询 DocDB 的方法(例如 CreateDocumentAsync()),其中 return 一个 ResourceResponse<Document> 对象包裹在一个Task<T>.

我想填充CreateDocumentAsync() for unit testing purposes, however the return type, ResourceResponse<T>, doesn't appear to have a public constructor, despite mention of one in the documentation

这里是我想要完成的极其简化的版本:

[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);
    }
}

如何在填充方法中为 return 创建自定义 ResrouceResponse<Document> 对象?

如评论中所述。 v1.10 的 SDK 支持 ResourceResponse 构造函数将无参数。项目解决方案中的 packages.config 应该显示项目正在使用的 DocumentDB SDK 的版本: