У меня есть тест spock/spring, который изменяет содержимое базы данных, и мне интересно, как откатить эту запись.
В настоящее время я выполняю необработанный оператор sql, сохраняю данные поля и после успешного теста восстанавливаю эти данные. Но я предполагаю, что это можно сделать проще?
@ContextConfiguration(locations = "classpath*:applicationContext-test.xml")
class RepositoryTest extends Specification {
@Shared sql = Sql.newInstance("jdbc:sqlserver://...")
ResourceRepository resourceRepository;
def "Save test"() {
setup:
// copy the row before we do changes! we need to restore this later on!
def row = sql.firstRow("select id, content, status from table-name where id = 12345")
when:
...
then:
..
cleanup:
sql.execute("""
update table-name set content = ${row.content}, status = ${row.status}
where id = ${row.id}
""")
}
}