我们正在尝试Wiremock(https://github.com/WireMock-Net/WireMock.Net)CosmosDb调用-因此我们可以在.net core 2.1微服务中构建集成测试。
通过查看WireMock实例的“请求/响应”条目,我们可以观察到以下内容: 1)前往“ /”
我们模拟了数据库的返回元数据
没关系
2)获取集合(在我们的示例中为“ / dbs / Chunker / colls / RHTMLChunks”)
返回有关集合的元数据
没关系
3)发布查询,导致一个文档返回集合中的文档端点(在我们的示例中为“ / dbs / Chunker / colls / RHTMLChunks / docs”)
我试图模拟当我们对邮递员中的CosmosDb实例执行完全相同的查询时得到的结果,包括标题和响应。
但是我发现lib一次又一次地查询。 (我可以通过在Visual Studio中暂停查看此内容,然后在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
}
问题: 1)找不到属于Microsoft.Azure.DocumentDB.Core v2.1.0的.pdb 2)应该返回什么有效载荷/标题,以便库不会崩溃,并在我们调用时重试:
var response = await documentQuery.ExecuteNextAsync<DocumentDto>(); // this hangs forever
请帮助:)
答案 0 :(得分:2)
我们正在努力开源C#代码库以及其他一些有趣的改进,以简化此过程。同时,我主张使用仿真器进行本地测试等,尽管我知道模拟仍然好很多,但速度会更快-会很困难:)
我最好的指针实际上是我们的Node.js代码库,因为它已经公开。查询代码相对难以遵循,但是基本上,您创建了一个查询,我们查找了需要与之交谈的所有分区,然后我们为每个分区发送一个请求并继续查询,直到我们没有取回连续令牌为止再来一次(或者maxBufferedItem Count / etc。超出了限制,我们暂停直到返回,等等)
有效地,我们为每个分区发出N个请求,其中N是结果的页面数,并且可以随每个分区和查询而变化。您可能可以模拟单个分区,单个页面响应相对容易,但是完整的分区响应将变得很有趣。
正如我在开始时提到的,我们希望在今年年底之前推出一些很酷的东西,这将使离线模拟变得更加容易,并最终将其开源。在那之前,使用仿真器可能会更好。