Поле массива каратэ становится объектом, когда оно возвращается из функции JS

Схема приложений может развиваться во времени; если у вас есть несколько установок, которые могут быть в разных версиях, у вас должен быть какой-то способ убедиться, что ваше приложение, какой-то инструмент или сценарий способны переносить схему и данные с одной версии поэтапно на любой следующий.

Имея все ваше упорство в сопоставлениях спящего режима (или аннотации), это очень хороший способ контролировать эволюцию схемы.

Вы должны учитывать, что эволюция схемы имеет несколько аспектов:

  1. эволюция схемы базы данных при добавлении большего количества столбцов и таблиц
  2. удаление старых столбцов, таблиц и отношений
  3. заполнение новых столбцов по умолчанию

Инструменты гибернации важны, в частности, в случае (например, по моему опыту), у вас разные версии одного и того же приложения во многих различных типах баз данных.

Точка 3 очень чувствительна, если вы используете Hibernate, так как в случае, если вы вводите новое логическое значение или числовое значение, если Hibernate найдет любое нулевое значение в таких столбцах, если возникнет исключение.

Итак, что бы я сделал: действительно используйте возможности инструментов Hibernate для обновления схемы, но вы должны добавить вместе с ним некоторые обратные вызовы обслуживания данных и схемы, например, для заполнения значений по умолчанию, сброса более не используемых столбцов, и тому подобное. Таким образом, вы получаете преимущества (сценарии обновления базы данных, независимые от схемы, и избегаете дублирования кодирования обновлений, в реальном времени и в сценариях), но вы также охватываете все аспекты операции.

Так, например, если обновление версии состоит только в добавлении свойства varchar valued (следовательно, column), которое по умолчанию может иметь значение null, при этом автоматически будет выполнено обновление.

Предполагается, что приложение, когда оно обновлено, может обновить свою схему (это может быть сделано), что также означает, что он должен иметь права пользователя сделать это на схеме. Если политика клиента предотвращает это (вероятно, случай с ящерицей Lizard), вам придется предоставить сценарии, специфичные для базы данных.

1
задан Roman L. 18 January 2019 в 15:01
поделиться

2 ответа

вы можете сделать 1 вещь ... перед возвратом вашего json в javascript преобразуйте его в строку, используя configParameters = JSON.stringify(configParameters), теперь вызывайте эту функцию из файла объектов с переменной json.

In function "function(fleetId)"

перед возвратом результата преобразуйте его в строку, набрав

result = JSON.stringify(result)

, здесь вы вызовете эту функцию из каратэ

* json fleetId = function(fleetId)
* print fleetId

Я надеюсь, что это решит ваш вопрос [117 ]

0
ответ дан Ankit Desai 18 January 2019 в 15:01
поделиться

Да, в 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
0
ответ дан Peter Thomas 18 January 2019 в 15:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: