LaFee
(Arina)
01.Март.2019 12:43:42
#1
Доброе время суток
Есть контракт, который в респонз боди возвращает “blabla”
В спринг-клауд-контракт пишу
response {
status 200
body("blabla")
headers {
contentType(applicationJsonUtf8())
}
}
Но в ответ приходит ошибка
expected:<"[blabla]"> but was:<"["blabla"]">
Подскажите, пожалуйста, как туда еще кавычки добавить?
Экранирование в виде body("\"blabla\"")
не помогло
Если писать body("[\"blabla\"]")
-> com.jayway.jsonpath.InvalidPathException: Filter: [?] can not be applied to primitives. Current context is: blabla
BabyRoot
(Vasily)
01.Март.2019 12:56:48
#2
Попробуйте одинарные кавычки.
LaFee
(Arina)
01.Март.2019 13:05:35
#3
body(‘blabla’) приводит
expected:<"[blabla]"> but was:<"["blabla"]">
body(’“blabla”’) приводит
Test.java:[33,62] ')' expected
[ERROR]Test.java:[33,273] illegal start of expression
[ERROR] Test.java:[33,274] ';' expected
[ERROR] Test.java:[33,276] illegal start of expression
body('\"blabla\"')
тоже к ошибке компиляции как выше
BabyRoot
(Vasily)
01.Март.2019 13:12:25
#4
Я имел ввиду что-то типа этого: body("'blabla'")
LaFee
(Arina)
01.Март.2019 13:17:10
#5
если одинарные тогда
expected:<"['blabla']"> but was:<"["blabla"]">
BabyRoot
(Vasily)
01.Март.2019 13:55:08
#6
А что происходит при body("\"blabla\"")
? Как именно не помогает?
LaFee
(Arina)
01.Март.2019 14:00:10
#7
Превращает в assertThat(responseBody).isEqualTo(""blabla"");
В логах при сборке
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile (default-testCompile) on project: Compilation failure: Compilation failure:
[ERROR] Test.java:[33,62] ')' expected
[ERROR] Test.java:[33,273] illegal start of expression
[ERROR] Test.java:[33,274] ';' expected
[ERROR] Test.java:[33,276] illegal start of expression
LaFee
(Arina)
01.Март.2019 15:25:58
#9
Failed to execute goal org.springframework.cloud:spring-cloud-contract-maven-plugin:2.0.2.RELEASE:generateTests (default-generateTests) on project: Execution default-generateTests of goal org.springframework.cloud:spring-cloud-contract-maven-plugin:2.0.2.RELEASE:generateTests failed: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[ERROR]Token.groovy: 21: unexpected token: ] @ line 21, column 227.
[ERROR] blabla=])
[ERROR] ^
5am
(5am)
01.Март.2019 19:26:33
#10
попробуйте сделать extract из body и ассертить полученный результат
LaFee
(Arina)
02.Март.2019 15:02:34
#11
можно ли такое сделать с помощью Spring Cloud Contract хороший вопрос, отпишусь потом, что вышло
LaFee
(Arina)
04.Март.2019 14:28:24
#12
в итоге было принято решение замокать контракт на голанге и все стало хорошо
VatslauX
(Vatslau)
05.Март.2019 08:37:41
#13
такое впечатление
Если писать body("[\"blabla\"]")
-> com.jayway.jsonpath.InvalidPathException: Filter: [?] can not be applied to primitives. Current context is: blabla
что вы ассертаете int (в массиве)
со строкой(в массиве)
responseBody - возможно нужно привести к json строке
часто бывает что тип ИМЯ_БИЛИОТЕКИ.ResponseBody