Схема приложений может развиваться во времени; если у вас есть несколько установок, которые могут быть в разных версиях, у вас должен быть какой-то способ убедиться, что ваше приложение, какой-то инструмент или сценарий способны переносить схему и данные с одной версии поэтапно на любой следующий.
Имея все ваше упорство в сопоставлениях спящего режима (или аннотации), это очень хороший способ контролировать эволюцию схемы.
Вы должны учитывать, что эволюция схемы имеет несколько аспектов:
Инструменты гибернации важны, в частности, в случае (например, по моему опыту), у вас разные версии одного и того же приложения во многих различных типах баз данных.
Точка 3 очень чувствительна, если вы используете Hibernate, так как в случае, если вы вводите новое логическое значение или числовое значение, если Hibernate найдет любое нулевое значение в таких столбцах, если возникнет исключение.
Итак, что бы я сделал: действительно используйте возможности инструментов Hibernate для обновления схемы, но вы должны добавить вместе с ним некоторые обратные вызовы обслуживания данных и схемы, например, для заполнения значений по умолчанию, сброса более не используемых столбцов, и тому подобное. Таким образом, вы получаете преимущества (сценарии обновления базы данных, независимые от схемы, и избегаете дублирования кодирования обновлений, в реальном времени и в сценариях), но вы также охватываете все аспекты операции.
Так, например, если обновление версии состоит только в добавлении свойства varchar valued (следовательно, column), которое по умолчанию может иметь значение null, при этом автоматически будет выполнено обновление.
Предполагается, что приложение, когда оно обновлено, может обновить свою схему (это может быть сделано), что также означает, что он должен иметь права пользователя сделать это на схеме. Если политика клиента предотвращает это (вероятно, случай с ящерицей Lizard), вам придется предоставить сценарии, специфичные для базы данных.
вы можете сделать 1 вещь ... перед возвратом вашего json в javascript преобразуйте его в строку, используя configParameters = JSON.stringify(configParameters)
, теперь вызывайте эту функцию из файла объектов с переменной json.
In function "function(fleetId)"
перед возвратом результата преобразуйте его в строку, набрав
result = JSON.stringify(result)
, здесь вы вызовете эту функцию из каратэ
* json fleetId = function(fleetId)
* print fleetId
Я надеюсь, что это решит ваш вопрос [117 ]
Да, в JDK есть такая странная ошибка, с которой вы обычно никогда не сталкивались, если не начали делать вложенные массивы в JS: https://github.com/intuit/karate/blob/master/karate-junit4/ src / test / java / com / intuit / karate / junit4 / demos / js-arrays.feature # L44
Обходной путь здесь заключается в создании JSON с использованием каратэ, а не JS:
[116 ] РЕДАКТИРОВАТЬ: см. Использованиеread()
ниже вместо «in-line»:
# * def conf = { "configParameters": [{ "keyName": "N/A", "value": "testValue" }], "id": 4 }
* def fun =
"""
function(fleetId) {
var result = {};
result.name = "TestConnection";
result.fleetId = fleetId;
var conf = read('conf.json');
result.connectionConfigDefault = conf;
return result;
}
"""
Поскольку в каратэ очень много хороших способов, почему бы вам не использовать их:
* def fleetId = 1
* set temp
| path | value |
| name | 'TestConnection' |
| fleetId | fleetId |
| connectionConfigDefault | { "configParameters": [{ "keyName": "N/A", "value": "testValue" }], "id": 4 } |
* print temp