以下示例,来自 Sitecore 开发人员手册中的"通过标记基于的方面来优化搜索结果"部分。但是,我正在使用 Sitecore.FakeDB 针对它编写单元测试。尝试获取结果()时出现此错误
类型"Sitecore.ContentSearch.Linq.QueryableExtensions"上没有与指定参数匹配的方法"FacetOn"。
这是代码
SearchResults<ArticleSrch> results = null;
var query = searchContext.GetQueryable<ArticleSrch>()
.Where<ArticleSrch>(i =>(i.TemplateName!=null && i.TemplateName.ToString().Equals("Base Article")))
;
query = query.FacetOn(facet => facet.Tags);
results = query.GetResults();
return results;
谁能帮忙?
所以在环顾四周之后,我找到了答案。水超音速的Kevin Brechuhl实际上使用内容搜索和单元测试做了类似的事情。
内容搜索测试
所以基本上我缺少"FacetOn"的模拟实现,类似于第 79 行的 GetResults()。有趣的部分是使用 LINQ 模拟分面,我只是简单地做了
public static IQueryable<TSource> FacetOn<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
{
return source.OrderBy(keySelector).AsQueryable();
}