Solr单元测试MoqSolr.Query()

本文关键字:Query MoqSolr 单元测试 Solr | 更新日期: 2023-09-27 18:25:26

我正在尝试Moq Solr的Query()函数。我可以编译代码,但当它运行时,我会收到错误:

Object of type 'SolrNet.SolrQuery' cannot be converted to type 'SolrNet.SolrQueryResults`1[SolrProject.Document']

下面是我如何模拟Query()函数的。我不知道它为什么要转换。SolrQuery是Query()函数的参数,而SolrQueryResults是返回类型。

Mock<ISolrOperations<Document>> solr = new Mock<ISolrOperations<Document>>();
solr.Setup(x => x.Query(It.IsAny<SolrQuery>()))
                .Returns<SolrQueryResults<Document>>(s =>
                {
                    SolrQueryResults<Document> data = new SolrQueryResults<Document>();
                    data.Add(new Document
                        {
                            Author = "Bob"
                        });
                    return data;
                });

Solr单元测试MoqSolr.Query()

原因其实很简单。MoqReturns<T>方法的泛型参数表示模拟方法公开的参数类型,而不是返回类型。

下面的代码显示了您想要执行的操作。泛型参数应该是SolrQuery,而不是SolrQueryResults<Document>

solr.Setup(x => x.Query(It.IsAny<SolrQuery>()))
                .Returns<SolrQuery>(s =>
                {
                    SolrQueryResults<Document> data = new SolrQueryResults<Document>();
                    data.Add(new Document
                        {
                            Author = "Bob"
                        });
                    return data;
                });