首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查QueryContainer是否具有特定属性?

如何检查QueryContainer是否具有特定属性?
EN

Stack Overflow用户
提问于 2019-09-30 13:17:42
回答 1查看 1.4K关注 0票数 2

在解析自己的简单查询语言时,我正在为NEST客户端生成Elasticsearch查询。也就是说,解析器返回一个QueryDescriptor (它是Func<QueryContainerDescriptor<SearchResult>, QueryContainer>的别名),然后可以使用它从Elasticsearch获取搜索结果。

当输入是类似于nestedObject.someField:someValue的查询时,将调用下面的带有query == "nestedObject.someField:someValue"GetQueryDescriptor方法。

代码语言:javascript
运行
复制
// NestedObjectQueryToken.cs
public Func<QueryContainerDescriptor<SearchResult>, QueryContainer> GetQueryDescriptor(string query)
{
    // GetFieldNames() extracts the fields that the user search in from the query
    // (there could possibly be more than one field present)
    var nestedFields = query.GetFieldNames().Select(fieldName => new Field("nestedObject." + fieldName));
    return descriptor => descriptor.NestedFieldSearch(query, _ => _.Fields(fields));
}
代码语言:javascript
运行
复制
// QueryDescriptorExtensions.cs
public static QueryContainer NestedFieldSearch(this QueryContainerDescriptor<SearchResult> descriptor,
    string query, FieldsDescriptor nestedFields)
{
    return descriptor.Nested(n => n
        .Path("nestedObject")
        .Query(sub => sub
            .QueryString(queryString => queryString
                .Query(query)
                .Fields(nestedFields))))
}

SearchResult是用于映射结果的类。

QueryDescriptor稍后应用于SearchDescriptor<SearchResult>,以便可以在NEST的Search方法中使用。

我希望QueryDescriptor具有特定的属性。在上面的示例中,它应该包含一个嵌套查询,其内部查询的字段设置为"nestedObject.someField“。

现在,我想使用单元测试来测试这个属性,即不将查询发送到服务器。

如何“查看QueryDescriptor**”内部的以断言其属性与预期的相同?“**

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-30 13:36:20

您可以通过将结果查询容器转换为IQueryContainer来实现这一点。

代码语言:javascript
运行
复制
QueryContainer Query(QueryContainerDescriptor<Document> q) =>
    q.Term(t => t.Field(f => f.Name).Value("something"));

var actual = Query(new QueryContainerDescriptor<Document>()) as IQueryContainer;

Assert.AreEqual("something", actual.Term.Value);

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58168735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档