.net core Cosmos Db库Microsoft.Azure.DocumentDB.Core(2.1.0)-实际REST调用

.net core Cosmos Db库Microsoft.Azure.DocumentDB.Core(2.1.0)-实际REST调用,.net-core,azure-cosmosdb,.net Core,Azure Cosmosdb,我们正在尝试Wiremock()CosmosDb调用,这样我们就可以在.NETCore2.1微服务中构建integrationtests 通过查看WireMock实例请求/响应条目,我们可以观察到以下内容: 1) 走向“/” 我们模拟数据库返回的元数据 这没关系 2) 开始收集(在我们的例子中:“/dbs/Chunker/colls/RHTMLChunks”) 返回有关集合的元数据 这没关系 3) 发布一个查询,该查询将导致一个文档返回到集合上的documents端点(在本例中为:“/dbs/C

我们正在尝试Wiremock()CosmosDb调用,这样我们就可以在.NETCore2.1微服务中构建integrationtests

通过查看WireMock实例请求/响应条目,我们可以观察到以下内容: 1) 走向“/”

我们模拟数据库返回的元数据

这没关系

2) 开始收集(在我们的例子中:“/dbs/Chunker/colls/RHTMLChunks”)

返回有关集合的元数据

这没关系

3) 发布一个查询,该查询将导致一个文档返回到集合上的documents端点(在本例中为:“/dbs/Chunker/colls/RHTMLChunks/docs”)

我试图模拟我们在Postman中对CosmosDb实例执行完全相同的查询时得到的结果,包括标题和响应

然而,我观察到lib一次又一次地执行查询。。。。 (我可以通过在VisualStudio中暂停,然后查看WireMock中的RequestLog来了解这一点)

有人知道应该退还什么吗。我已设置WireMock以返回以下json负载:

{
"_rid": "q0dcAOelSAI=",
"Documents": [
    {
        "id": "gL20020621z2D34-1",
        "ChunkSize": 658212,
        "TotalChunks": 2,
        "Metadata": {
            "Active": true,
            "PublishedDate": "",
        },
        "ChunkId": 1,
        "Markup": "<h1>hello</h1>",
        "MainDestination": "gL20020621z2D34",
        "_rid": "q0dcAOelSAIHAAAAAAAAAA==",
        "_self": "dbs/q0dcAA==/colls/q0dcAOelSAI=/docs/q0dcAOelSAIHAAAAAAAAAA==/",
        "_etag": "\"0100e92a-0000-0000-0000-5ba96cf70000\"",
        "_attachments": "attachments/",
        "_ts": 1537830135
    }
],
"_count": 0
{
“_rid”:“q0dcAOelSAI=”,
“文件”:[
{
“id”:“gL20020621z2D34-1”,
“ChunkSize”:658212,
“TotalChunks”:2,
“元数据”:{
“主动”:正确,
“发布日期”:“,
},
“ChunkId”:1,
“标记”:“你好”,
“主要目的地”:“gL20020621z2D34”,
“_rid”:“q0dcAOelSAIHAAAAAAAAAA==”,
“_self”:“dbs/q0dcAA==/colls/q0dcAOelSAI=/docs/q0dcAOelSAIHAAAAAAAAAA==/”,
“\u etag”:“0100e92a-0000-0000-5ba96cf70000\”,
“_附件”:“附件/”,
“_ts”:1537830135
}
],
“_计数”:0
}

问题: 1) 找不到属于Microsoft.Azure.DocumentDB.Core v2.1.0的.pdb 2) 应返回哪些负载/头,以便库不会爆炸,并在调用时重试:

var response = await documentQuery.ExecuteNextAsync<DocumentDto>(); // this hangs forever
var response=wait documentQuery.ExecuteNextAsync();//这个永远挂着

请帮助:)

我们正在进行C代码库的开源工作,以及一些其他有趣的改进,以使之更容易实现。同时,我主张使用模拟器进行本地测试/等等,尽管我知道模拟仍然要快得多,而且更好——这很难:)

我最好的指针实际上是我们的Node.js代码库,因为它已经是公共的了。查询代码相对来说比较难理解,但基本上,您创建一个查询,我们查找所有需要对话的分区,然后为每个分区发送一个请求并继续查询,直到我们再也找不到延续令牌为止(或者maxBufferedItem计数/等超过限制,我们暂停,直到返回,等等)

实际上,我们为每个分区发送N个请求,其中N是结果的页数,并且每个分区和查询可以不同。您可能可以相对轻松地模拟单个分区、单个页面的响应,但完整分区的响应不会很有趣


正如我在一开始提到的,我们已经有了一些很酷的东西,希望在今年年底之前,这将使线下嘲弄变得更容易,以及最终的开源。在此之前,您最好使用模拟器。

为什么不使用Azure CosmosDB模拟器进行本地集成测试?最好我们能够单独测试微服务,但是如果这很困难,那么使用模拟器是一个不错的回退解决方案。感谢您的全面回答。期待着C#library的开源。如果您能够使库WireMockable,那将是非常棒的(或者在应用程序本身中很容易测试)!我们正在计划(只是计划,可以更改:)基本上借用HttpClient委托处理程序管道。有了它,就可以很容易地加入到一个mocker中,而不用太担心电线部分。我们甚至可能有一个库来简化这一过程。通过简化解决方案集成风格测试,cosmos db将获得巨大的技术卖点——至少在我的书中是这样。如果您需要alpha/beta测试仪,请告诉我:)