Sitecore.FakeDB和Sitecore内容搜索与facet

时间:2016-07-06 21:53:05

标签: linq unit-testing sitecore sitecore8 faceted-search

以下示例来自"通过基于标记的方面优化搜索结果"来自 Sitecore Cookbook for Developers 。 但是,我使用Sitecore.FakeDB来编写单元测试。 尝试Getresults()

时出现此错误
  

没有方法' FacetOn' on type" Sitecore.ContentSearch.Linq.QueryableExtensions'与指定的参数匹配。

这是代码

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;

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

所以在环顾四周之后,我找到了答案。 aquasonic的Kevin Brechuhl实际上使用内容搜索与单元测试做了类似的事情。

ContentSearchTest

所以基本上我错过了&#34; FacetOn&#34;的模拟实现,类似于第79行的GetResults()。有趣的部分是使用LINQ来模拟facetting,我只是做了

   public static IQueryable<TSource> FacetOn<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
    {
        return source.OrderBy(keySelector).AsQueryable();
    }