- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在特定情况下验证架构 json 时遇到问题,但我在其他测试用例中使用了类似的代码并且成功了。以下是我无法成功验证架构的示例:
我使用的代码:
given()
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.header("TokenPass", tokken)
.when()
.get(endpoint)
.then()
.statusCode(200)
.contentType(ContentType.JSON)
.body(matchesJsonSchemaInClasspath("schemas.json/schema_cardapio_produto.json"));
我的 json 架构,为“https://jsonschema.net/#/”生成。我已将此生成器用于其他测试用例,并且取得了成功。
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "array",
"title": "The Root Schema",
"items": {
"$id": "#/items",
"type": "object",
"title": "The Items Schema",
"required": [
"codigoSecaoProduto",
"idProduto",
"codigo",
"descricao",
"descricaoDetalhada",
"unidadeMedida",
"ordem",
"indisponivel",
"urlImagem",
"codigoEstruturaMercadologica",
"customizavel",
"comboVariavel",
"tipoItemConsumo",
"precoVenda",
"precoPromo",
"cardapioDigitalEstabelecimentoSecaoProdutoObsPreparo",
"cardapioDigitalEstabelecimentoSecaoProdutoComplementos",
"promocaoPremmia",
"etapasIngredientes"
],
"properties": {
"codigoSecaoProduto": {
"$id": "#/items/properties/codigoSecaoProduto",
"type": "string",
"title": "The Codigosecaoproduto Schema",
"default": "",
"examples": [
"MV8xOF8x"
],
"pattern": "^(.*)$"
},
"idProduto": {
"$id": "#/items/properties/idProduto",
"type": "integer",
"title": "The Idproduto Schema",
"default": 0,
"examples": [
1207
]
},
"codigo": {
"$id": "#/items/properties/codigo",
"type": "string",
"title": "The Codigo Schema",
"default": "",
"examples": [
"22498663"
],
"pattern": "^(.*)$"
},
"descricao": {
"$id": "#/items/properties/descricao",
"type": "string",
"title": "The Descricao Schema",
"default": "",
"examples": [
"Mocha"
],
"pattern": "^(.*)$"
},
"descricaoDetalhada": {
"$id": "#/items/properties/descricaoDetalhada",
"type": "string",
"title": "The Descricaodetalhada Schema",
"default": "",
"examples": [
"CAFÉ MOCHA : ESPRESSO+LEITE VAPORIZADO+CALDA DE CHOCOLATE"
],
"pattern": "^(.*)$"
},
"unidadeMedida": {
"$id": "#/items/properties/unidadeMedida",
"type": "string",
"title": "The Unidademedida Schema",
"default": "",
"examples": [
"ML "
],
"pattern": "^(.*)$"
},
"ordem": {
"$id": "#/items/properties/ordem",
"type": "integer",
"title": "The Ordem Schema",
"default": 0,
"examples": [
1
]
},
"indisponivel": {
"$id": "#/items/properties/indisponivel",
"type": "boolean",
"title": "The Indisponivel Schema",
"default": false,
"examples": [
false
]
},
"urlImagem": {
"$id": "#/items/properties/urlImagem",
"type": "string",
"title": "The Urlimagem Schema",
"default": "",
"examples": [
"url/Media/BR/produto/79ce7f59-8c7b-44f5-b70b-c5bda28f18b3.jpe"
],
"pattern": "^(.*)$"
},
"codigoEstruturaMercadologica": {
"$id": "#/items/properties/codigoEstruturaMercadologica",
"type": "integer",
"title": "The Codigoestruturamercadologica Schema",
"default": 0,
"examples": [
959
]
},
"customizavel": {
"$id": "#/items/properties/customizavel",
"type": "boolean",
"title": "The Customizavel Schema",
"default": false,
"examples": [
false
]
},
"comboVariavel": {
"$id": "#/items/properties/comboVariavel",
"type": "boolean",
"title": "The Combovariavel Schema",
"default": false,
"examples": [
false
]
},
"tipoItemConsumo": {
"$id": "#/items/properties/tipoItemConsumo",
"type": "string",
"title": "The Tipoitemconsumo Schema",
"default": "",
"examples": [
"ProdutoSimples"
],
"pattern": "^(.*)$"
},
"precoVenda": {
"$id": "#/items/properties/precoVenda",
"type": "number",
"title": "The Precovenda Schema",
"default": 0.0,
"examples": [
5.5
]
},
"precoPromo": {
"$id": "#/items/properties/precoPromo",
"type": "null",
"title": "The Precopromo Schema",
"default": null,
"examples": [
null
]
},
"cardapioDigitalEstabelecimentoSecaoProdutoObsPreparo": {
"$id": "#/items/properties/cardapioDigitalEstabelecimentoSecaoProdutoObsPreparo",
"type": "array",
"title": "The Cardapiodigitalestabelecimentosecaoprodutoobspreparo Schema"
},
"cardapioDigitalEstabelecimentoSecaoProdutoComplementos": {
"$id": "#/items/properties/cardapioDigitalEstabelecimentoSecaoProdutoComplementos",
"type": "array",
"title": "The Cardapiodigitalestabelecimentosecaoprodutocomplementos Schema"
},
"promocaoPremmia": {
"$id": "#/items/properties/promocaoPremmia",
"type": "array",
"title": "The Promocaopremmia Schema"
},
"etapasIngredientes": {
"$id": "#/items/properties/etapasIngredientes",
"type": "array",
"title": "The Etapasingredientes Schema"
}
}
}
}
这个Json是有效的,我使用了几个Json validator 来检查。我收到此错误:
com.jayway.restassured.module.jsv.JsonSchemaValidationException: com.github.fge.jsonschema.core.exceptions.ProcessingException: fatal: content at URI "file:/C:/Users/pedro.grazziani/eclipse-workspace/APITestesDigital/target/test-classes/schemas.json/schema_cardapio_produto.json#" is not valid JSON
level: "fatal"
uri: "file:/C:/Users/pedro.grazziani/eclipse-workspace/APITestesDigital/target/test-classes/schemas.json/schema_cardapio_produto.json#"
parsingMessage: "Invalid UTF-8 middle byte 0x20"
at com.jayway.restassured.module.jsv.JsonSchemaValidator.matchesSafely(JsonSchemaValidator.java:233)
at com.jayway.restassured.module.jsv.JsonSchemaValidator.matchesSafely(JsonSchemaValidator.java:75)
at org.hamcrest.TypeSafeMatcher.matches(TypeSafeMatcher.java:65)
at org.hamcrest.Matcher$matches.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122)
at io.restassured.assertion.BodyMatcher.validate(BodyMatcher.groovy:76)
at io.restassured.assertion.BodyMatcher$validate$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:138)
at io.restassured.assertion.BodyMatcherGroup$_validate_closure2.doCall(BodyMatcherGroup.groovy:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:292)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
at groovy.lang.Closure.call(Closure.java:423)
at groovy.lang.Closure.call(Closure.java:439)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(DefaultGroovyMethods.java:3167)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(DefaultGroovyMethods.java:3137)
at org.codehaus.groovy.runtime.dgm$66.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122)
at io.restassured.assertion.BodyMatcherGroup.validate(BodyMatcherGroup.groovy:47)
at io.restassured.assertion.BodyMatcherGroup$validate$3.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:138)
at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:458)
at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure$validate$1.call(Unknown Source)
at io.restassured.internal.ResponseSpecificationImpl.validateResponseIfRequired(ResponseSpecificationImpl.groovy:643)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:163)
at io.restassured.internal.ResponseSpecificationImpl.content(ResponseSpecificationImpl.groovy:94)
at io.restassured.specification.ResponseSpecification$content$1.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
at io.restassured.internal.ResponseSpecificationImpl.body(ResponseSpecificationImpl.groovy:244)
at io.restassured.internal.ValidatableResponseOptionsImpl.body(ValidatableResponseOptionsImpl.java:262)
at api.testes.APITesteCardapio.consulta_um_produto_de_uma_secao_de_cardapio(APITesteCardapio.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: com.github.fge.jsonschema.core.exceptions.ProcessingException: fatal: content at URI "file:/C:/Users/pedro.grazziani/eclipse-workspace/APITestesDigital/target/test-classes/schemas.json/schema_cardapio_produto.json#" is not valid JSON
level: "fatal"
uri: "file:/C:/Users/pedro.grazziani/eclipse-workspace/APITestesDigital/target/test-classes/schemas.json/schema_cardapio_produto.json#"
parsingMessage: "Invalid UTF-8 middle byte 0x20"
at com.github.fge.jsonschema.core.load.URIManager.getContent(URIManager.java:110)
at com.github.fge.jsonschema.core.load.SchemaLoader$1.load(SchemaLoader.java:115)
at com.github.fge.jsonschema.core.load.SchemaLoader$1.load(SchemaLoader.java:109)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821)
at com.github.fge.jsonschema.core.load.SchemaLoader.get(SchemaLoader.java:172)
at com.github.fge.jsonschema.main.JsonValidator.buildJsonSchema(JsonValidator.java:210)
at com.github.fge.jsonschema.main.JsonSchemaFactory.getJsonSchema(JsonSchemaFactory.java:224)
at com.jayway.restassured.module.jsv.JsonSchemaValidator.matchesSafely(JsonSchemaValidator.java:221)
... 78 more
最佳答案
看看这个 answer
您的文件 schemas.json/schema_cardapio_produto.json
似乎以非 UTF-8 编码存储。例如,在 latin-1
或其他系统/操作系统默认编码
很难说为什么会发生这种情况,也许在从剪贴板存储文件内容时使用了不同的文本编辑器。你需要save this file back into UTF-8
如果您使用 IntelliJ Idea IDE,您可以打开该 json 文件并 check bottom right corner of text editor for actual encoding
关于java - 请放心解析消息时出错 : "Invalid UTF-8 middle byte 0x20",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51974029/
我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。 尽管知道我的数据库查
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在尝试运行 Android 应用程序时遇到问题并收到以下错误 java.lang.NoClassDefFoundError: com.parse.Parse 当我尝试运行该应用时。 最佳答案 在这
有什么办法可以防止etree在解析HTML内容时解析HTML实体吗? html = etree.HTML('&') html.find('.//body').text 这给了我 '&' 但我想
我有一个有点疯狂的例子,但对于那些 JavaScript 函数作用域专家来说,它看起来是一个很好的练习: (function (global) { // our module number one
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我需要编写一个脚本来获取链接并解析链接页面的 HTML 以提取标题和其他一些数据,例如可能是简短的描述,就像您链接到 Facebook 上的内容一样。 当用户向站点添加链接时将调用它,因此在客户端启动
在 VS Code 中本地开发时,包解析为 C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index而不是
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我被赋予了将一种语言“翻译”成另一种语言的工作。对于使用正则表达式的简单逐行方法来说,源代码过于灵活(复杂)。我在哪里可以了解更多关于词法分析和解析器的信息? 最佳答案 如果你想对这个主题产生“情绪化
您好,我在解析此文本时遇到问题 { { { {[system1];1;1;0.612509325}; {[system2];1;
我正在为 adobe after effects 在 extendscript 中编写一些代码,最终变成了 javascript。 我有一个数组,我想只搜索单词“assemble”并返回整个 jc3_
我有这段代码: $(document).ready(function() { // }); 问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些
1.首先贴上我试验成功的代码 复制代码 代码如下: protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 X
【PHP代码】 复制代码 代码如下: $stmt = mssql_init('P__Global_Test', $conn) or die("initialize sto
在SQL查询分析器执行以下代码就可以了。 复制代码代码如下: declare @t varchar(255),@c varchar(255) declare table_cursor curs
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一: 二维数组中的
我是一名优秀的程序员,十分优秀!