我正在为下面的代码编写单元测试,这些代码使用带有where(filter)条件的Document客户端CreateDocumentQuery方法。

 var documentQuery = ReadOnlyDocumentClient.CreateDocumentQuery<MyView>(UriFactory.CreateDocumentCollectionUri(Constants.COSMOS_DB_NAME, Constants.MY_VIEW_COL_NAME))
                                                       .Where(w => w.Name== query.Name)
                                                       .Where(w => w.DOB> query.StartDate && w.DOB < query.EndDate)
                                                       .AsDocumentQuery();

查询是一个命令参数,它是一个输入。

我正在使用最小起订量进行模拟,并且正在使用下面的代码行进行模拟
 mockDocumentClient.Setup(s => s.CreateDocumentQuery<MyView>(It.IsAny<Uri>(), It.IsAny<FeedOptions>())).Returns(mockDocumentQuery.Object);

现在,上面的代码仅模拟CreateDocumentQuery,执行条件时,我没有得到模拟支持。

请提出如何在何处条件下模拟CreateDocumentQuery的建议?

提前致谢。

最佳答案

您可以尝试以下示例:

var documentClientMock = new Mock<IDocumentClient>();
var docs = new List<MyView>();//your mock data
documentClientMock.Setup(d => d.CreateDocumentQuery<MyView>(It.IsAny<Uri>(), It.IsAny<FeedOptions>()))
    .Returns((IOrderedQueryable<MyView>) docs.AsQueryable());

09-06 22:41