- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Olingo 框架以 Java 语言实现符合 OData 标准第 4 版的 Web 服务。我需要自定义 $filter
的响应。我已经实现了一个访客 as documented in the quick start 。我需要实现集成测试来尝试不同类型的语法并防止将来维护时出现回归错误。
对于 V2,我找到了 the following tutorial和以下代码:
@Test
public void printExpressionWithProperty() throws Exception {
//Use a mocked edmProvider for this tutorial
TestEdmProvider provider = new TestEdmProvider();
Edm edm = RuntimeDelegate.createEdm(provider);
EdmEntityType entityType = edm.getEntityType(TestEdmProvider.NAMESPACE_1, TestEdmProvider.ENTITY_TYPE_1_1.getName());
String rawExpression = "EmployeeId eq '1'";
FilterExpression expression = UriParser.parseFilter (null, entityType, rawExpression);
String whereClause = (String) expression.accept(new JdbcSimpleStringVisitor());
System.out.println("Raw: " + rawExpression + " ------> Whereclause: " + whereClause);
System.out.println();
}
不幸的是,UriParser.parseFilter
在 v4 中不存在。
我试过这个:
public class MyVisitorTest {
private final FullQualifiedName NAME1 = new FullQualifiedName("testNamespace1", "myfield");
private final OData odata = OData.newInstance();
public EdmEntityType createEntityType(final FullQualifiedName fqn) {
if (NAME1.equals(fqn)) {
EdmEntityType entityType = mock(EdmEntityType.class);
when(entityType.getNamespace()).thenReturn(fqn.getNamespace());
when(entityType.getName()).thenReturn(fqn.getName());
return entityType;
}
return null;
}
private Expression parseExpression(final String expressionString)
throws UriParserException, UriValidationException {
UriTokenizer tokenizer = new UriTokenizer(expressionString);
EdmEntityType entityType = createEntityType(NAME1);
Edm edm = mock(Edm.class);
when(edm.getEntityType(NAME1)).thenReturn(entityType);
final Expression expression = new ExpressionParser(edm, odata).parse(tokenizer, null, null, null);
assertNotNull(expression);
assertTrue(tokenizer.next(UriTokenizer.TokenKind.EOF));
return expression;
}
@Test
public void simpleTest() throws UriParserException, UriValidationException, ODataApplicationException, ExpressionVisitException {
String exp = "myfield gt 2019-01-01T00:00:00Z";
Expression e = parseExpression(exp);
MyVisitor myVisitor = new MyVisitor();
String result = (String) e.accept(startEndMeasureVisitor);
assertEquals(result.toString(), "MyResult");
}
}
它不起作用,它向我发送以下消息:
Property paths must follow a structured type.
因此,我正在寻找任何想法来使我的单元测试发挥作用,或者您是否有可以分享的工作示例......
最佳答案
当谈到单元测试时,我会专注于单独测试每个过滤器方法。就像 visitBinaryOperator
根据输入返回预期值等。
我不是命名方面的专家,但我将您的测试称为集成测试。在这里,我将重点测试测试中准备的 FilterOption
。在您的原始应用程序中,Apache Olingo 将创建此 FilterOption
并且这部分(应该)在 Olingo 中进行测试。
当我使用 Apache Olingo 时,我经常提到 its repository ,尤其是server-test和server-tecsvc。验证 Olingo 本身的测试方式。
我建议看看FilterValidator因为它可能对您的集成测试有用。
关于java - 使用 Olingo/ODATA 4 编写 ExpressionVisitor 的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54214601/
我看到有描述使用 Olingo for Odata v2 注释的文档: https://olingo.apache.org/doc/odata2/tutorials/AnnotationProcess
我已经下载了Olingo server sample (Odata4),编译并部署在我本地的tomcat上 浏览网址http://localhost:8080/odata-server-sample/
我在 Hibernate 之上使用 Olingo 1.2。 我有一个返回 250 行的请求,每行以一对多关系链接到另一个表。 我执行 $expand 以获取子表中的所有数据,但是当我检查在数据库中执行
我尝试按照下面的 olingo 文档来创建一个 odata 服务。 AnnotationProcessor 但我无法创建具有类型为 ComplexType 列表的属性的实体。任何人都有它的例子。还是只
对于当前的项目,我们在 hibernate 之上使用 Olingo,并使用 picketlink 来实现安全性和角色。 具有不同角色的用户将具有不同的权限,这会影响对某些属性的读/写访问。考虑以下示例
即使我在代理后面,我也可以使用不同的浏览器并使用 Postman 成功访问以下 OData 服务: String SERVICE_ROOT = http://services.odata.org/V4
我们正在尝试使用 OData V4 的 Apache Olingo pojogen 解决方案。从生成的代码来看,它似乎不是线程安全的。有人知道在并发上下文中使用服务和实体容器的可能解决方案吗? 谢谢!
我是编程新手,在 Apache Olingo 上进行基本身份验证时遇到一些困难。 问题是我正在尝试使用基本身份验证访问 ODATA。当我尝试使用我的凭据访问该链接时,它工作正常。不幸的是,当我尝试 e
很抱歉,如果已经有人问过这个问题。我还没有找到答案。我有一个 oData v4 API,它根据从我公司的内部 Web 服务获取的 json 字符串构建 Olingo 实体集合。我还可以获取单个记录的
我正在使用 Apache olingo 开发 OData 客户端,凭据包含 native 字符,应该以 UTF-8 读取“授权” header 的 Base64 编码。第一种方法是 Olingo 建议
我使用 Apache Olingo v2。 SAP是服务器端,我负责客户端。我尝试编写一个带有导航实体的实体。我解释一下我想说的话。有一个名为 HUIDENT 的实体集,该集包含一个名为 ToHuCo
在 .NET C# 中,我们使用 Odata 对来自 SQL 数据库的数据库结果进行筛选、分页和排序。 .NET 中的 Odata 实际上会进入数据库,并查询 WHERE,ORDER By Filte
我在我的项目中使用 Apache Olingo v4 java 库,它工作得很好。谢谢! 我在调用某个特定端点时遇到问题 - https://learn.microsoft.com/en-us/dyn
目前我的项目正在使用 JPA 进行数据库连接。 我还使用默认的 OdataJPA 处理器。 如何才能不在我的 odata2 API 响应中包含某些字段,例如(“密码”)。或者我真的必须实现一个 cus
如何从代码实体类型中进行注释,如下所示: http://services.odata.org/OData/OData.svc/$metadata ? 提前致谢。 最佳答案 收到答复。在这里: 1. E
设置EntityType时键值是必需的吗? ? 这可能听起来有点奇怪,但我遇到了不需要 key 的情况。所以我问自己是否可以摆脱这些代码行。 List keyProperties =
OData官方教程展示了如何创建实体:http://www.odata.org/getting-started/basic-tutorial/#create 我想使用 Templier 的关于使用 O
我在 this tutorial 之后构建了一个基于 apache olingo、JPA 和 mySQL 的 OData Producer虽然在 OData Feed 中显示多对多关联,但根本不显示多
我按照 Apache Lingo 教程中概述的步骤创建了一个示例 OData 服务。 客户端收到的默认服务文档是: { "@odata.context" : "$metadata", "val
我正在尝试读取调用我的 OData 服务的用户的用户 ID。 在我的 web.xml 中,OData servlet 是一个保护区 EJODataServlet org.apache
我是一名优秀的程序员,十分优秀!