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;
});
原因其实很简单。Moq
中Returns<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;
});