Здравствуйте, я столкнулся с проблемой во время теста и только во время моего теста интеграции.Как я могу избежать Нахождение двух представлений одной коллекции
Найдено двух изображений той же коллекции: ClientPasswordPolicy.userCategoriesForProxyDuration;
В одном из моих доменов У меня есть следующая вещь:
Map<String, String> userCategoriesForProxyDuration
, который преобразованная как:
userCategoriesForProxyDuration joinTable:
мой тест выглядит так:
Client client0 = Client.findByName('client0')
UserCategory userCategory = UserCategory.build(value:'TEST_GUILHERME')
Client client = Client.build(name: 'Monkey')
ClientPasswordPolicy policy = ClientPasswordPolicy.build(client:client)
client.save(flush:true)
policy.userCategoriesForProxyDuration = ["TEST_GUILHERME":"36"]
policy.addToUserCategoriesNeedApproval(userCategory)
policy.proxyEnabled = true
policy.save(flush:true,failOnError:true,insert:true)
User user = User.build(username: "Test1", password: "password", client: client0)
Team team = Team.build(name: 'myTeamMonkey', client: client, members: [user])
ClientPasswordPolicy policy1 = ClientPasswordPolicy.build(client:Client.build(name:'Maria'),proxyApproverEmailAddress:'[email protected]')
Client client1 = Client.findByName('Maria')
Team team1 = Team.build(name: 'myTeamMaria1', client: client1, members: [user])
, но в строка, в которой я создаю вторую политику, я получаю ошибку, я делал некоторые попытки и для экзамена если я действительно хотел бы:
ClientPasswordPolicy.findAll()
два раза во второй раз будет получать ошибку в любом случае, та же ошибка. поэтому я боюсь, что я не знаю, почему политика не была очищена от транзакции и транзакция держится, поэтому я использую флеш после сохранения, даже если я использую сборку для создания своих доменов.
Я нашел некоторые вещи, как, во время проверки на ClientPasswordPolicy мы делаем такие вещи, как это:
userCategoriesForProxyDuration nullable: true, validator: { approvals, object ->
if(object.proxyEnabled && !approvals) {
return ['invalid.proxy.user.category.required']
}
for (approval in approvals) {
if (!(approval.key in UserCategory.list().value)) {
return ['invalid.proxy.approval.userType']
}
try {
Integer.parseInt(approval.value)
} catch (NumberFormatException e) {
return ['invalid.proxy.approval.duration']
}
}
И если я закомментировать не будет никаких проблем, я боюсь этого UserCategory.list() вызывает проблемы, но я не уверен, что с этим делать, я пытался использовать во время сохранения (validate: false) не будет работать.
Пробуйте с помощью NewTransaction обо всех битах, вызывающих проблему - так что сохраните и, возможно, список – Vahid
Я сделал это и работал, но замедлял приложение, потому что это часть проверки и обычно вы проверяете перед сохранением, так что вы открывая новую транзакцию, иногда GB не удаляет эту транзакцию в тот же момент, поэтому будет удерживать память – Galeixo