我们正在使用 Azure Cosmos 客户端 V3。为了获取数据,我们使用 GetItemLinqQueryable 和 ToFeedIterator 使其异步。它运行良好,但是在模拟/单元测试时,我们遇到了与 ToFeedIterator 相关的错误
代码:
IOrderedQueryable<T> linqQueryable = _container.GetItemLinqQueryable<T>(requestOptions: requestOptions);
var feedIterator = linqQueryable.Where(predicate).ToFeedIterator();
Run Code Online (Sandbox Code Playgroud)
对于模拟 UnitTestCode 代码:
var _mockResponse = new Mock<ItemResponse<Test>>();
mockContainer.Setup(x => x.GetItemLinqQueryable<Test>(It.IsAny<bool>(), It.IsAny<string>(), It.IsAny<QueryRequestOptions>())).Returns(queryable);
Run Code Online (Sandbox Code Playgroud)
它确实从 GetItemLinqQueryable 返回 1 条记录,但是 ToFeedIterator() 失败说System.ArgumentOutOfRangeException: 'ToFeedIterator is only supported on cosmos LINQ query operations Parameter name: linqQuery'