Integration tests não estão fazendo Rollback
25/09/2020 15:21
0
Prezados,

Estou usando o Grails 3.3.11 e estou com um problema nos meus testes de integração. Ocorre que os testes são feitos, dá tudo certo, só que os dados estão se acumulando na base de dados. Eu já tentei várias coisas, como, por exemplo, usar a anotação @Rollback, mas não está rolando. Fica um monte de lixo na base de dados. Podem me ajudar? O que eu estou fazendo de errado. Não consigo fazer parar o teste de salvar dados na base. Queria que o Rollback fosse automático.

import org.springframework.test.annotation.Rollback

@Integration
@grails.transaction.Rollback
class CmbIdControllerSpec extends Specification {
@Value('${local.server.port}')
Integer serverPort
String accessToken
String baseUrl
JSONObject documentPropertiesForTesting
JSONObject documentForTesting
String partTest
String userTest
String typeIdTest
String documentIdTest
def sessionFactory
def controller

void setup(){
baseUrl = "http://localhost:${serverPort}/cmbid/api/v1"
partTest = "partTest"
accessToken = "Bearer examplefXk"
}

void "Saving a new and valid document properties"() {
given:
documentPropertiesForTesting = createNewTestDocumentProperties()
typeIdTest = documentPropertiesForTesting.get("message").toString().substring(20,52)

expect:
documentPropertiesForTesting.get("status") == "ok"
documentPropertiesForTesting.get("message").contains("properly saved!")

}

@Rollback
def createNewTestDocumentProperties(){
CloseableHttpClient httpClient = HttpClients.createDefault();
def httpPost = setHttpPost(baseUrl + "/parts/${partTest}/metas")

JSONObject entireBody = new JSONObject()
entireBody.accumulate("highlights",setHighlightsDP())
entireBody.accumulate("screens", setScreensDP())
entireBody.accumulate("photo", "")
entireBody.accumulate("style", setStyleDP())

StringEntity jsonBody = new StringEntity(entireBody.toString())
httpPost.setEntity(jsonBody)

CloseableHttpResponse httpResponse = httpClient.execute(httpPost)
JSONObject responseBody = new JSONObject(EntityUtils.toString(httpResponse.getEntity()))

httpClient.close()

return responseBody
}
Tags: Grails 3.3.11 integration test


0
Por acaso o código que gera estes registros está acessando diretamente o datasource?
Se sim, pode ser que você esteja obtendo uma conexão fora do contexto transacional, o que geraria o problema.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto