Я использую Каратэ DSL (версия 0.6.1.1), и у меня есть следующий сценарий:
Scenario:
Given url baseURL
* def email = "test_email@test_domain.com"
* def query = "SELECT * FROM public.users where username='" + email + "' ORDER BY user_id ASC"
* def dbUrl = databaseUrl + "databaseName"
* def config = { username: '#(databaseUsername)', password: '#(databasePassword)', url: '#(dbUrl)', driverClassName: 'org.postgresql.Driver' }
* def DbUtils = Java.type('utility.database.DbUtils')
* def db = new DbUtils(config)
* def results = db.readRow(query)
* def supplierId = results.user_id
* print "SUPPLIERID: " + supplierId
Given path '/path/to/endpoint'
And header content-type = 'application/json'
And request { supplierId: #(supplierId) }
When method POST
Then status 200
utility.database.DbUtils
- это пользовательский класс, а readRow()
- это единственный член строки этогокласс, который возвращает результат JdbcTemplate.queryForMap(query)
.
Запуск этого сценария дает следующий журнал:
<code>
10:53:17.477 [main] INFO com.intuit.karate - [print] SUPPLIERID: 957750e7-ee6b-486d-977c-05c8ac7bb589
10:53:17.506 [main] INFO com.intuit.karate - request:{
"supplierId": 957750e7-ee6b-486d-977c-05c8ac7bb589
}
10:53:18.372 [main] DEBUG com.intuit.karate -
1 > POST <a href="http://baseurl.com/path/to/endpoint" rel="nofollow noreferrer">http://baseurl.com/path/to/endpoint</a>
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 17
1 > Content-Type: application/json
1 > Host: base.url.com
1 > User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_162)
{"supplierId":{}}
Вы можете видеть, что сначала тело запроса имеет значение supplierId
как 957750e7-ee6b-486d-977c-05c8ac7bb589
.Как только POST сделан, хотя, supplierId
просто {}
.Похоже, это как-то связано с тем, что supplierId
заполняется вызовом базы данных.Если я заменю вызов базы данных на простой * def supplierId = "957750e7-ee6b-486d-977c-05c8ac7bb589"
, тело запроса будет выглядеть так, как ожидалось.
Почему supplierId
заменяется на {}
при выполнении вызова POST и как мне остановитьэто от этого?