Мой пакет R изменяет данные в удаленной БД, и я хотел бы написать несколько тестов с testthat
.
Я знаю, что могу издеваться над БД, но я бы просто использовал одну нашу БД разработчика.
Как сделать соединение БД доступным для всех тестов, которые в нем нуждаются, при этом убедившись, что любое созданное соединение разрушено? Кажется очевидным, что подключение должно происходить в setup
, а отключение в teardown
, но я не справился.
Я пытался поместить следующий код в tests/testthat.R
или во вспомогательный файл tests/testthat/helper-_
, но безрезультатно.
setup({
# db_connect is just a basic wrapper around RMariaDB::dbConnect with logging
db_con <- db_connect(conf$database, loglevel = "none")
})
teardown({
# db_connect is just a basic wrapper around DBI::dbDisconnect with logging
db_disconnect(db_con = db_con, loglevel = "none")
})
Мои начальные тесты:
tests
├── testthat
│ ├── helper-_.R
│ ├── test-connect.R
│ └── test-questions.R
└── testthat.R
После первого файла (где проходят все тесты) я получаю Error in DBI::dbDisconnect(db_con) : object 'db_con' not found
, который указывает на то, что демонтаж происходит, но db_con
не найден.
После этого все тесты, требующие db_con
, не пройдут с object 'db_con' not found
.
Нужно ли создавать вспомогательный файл для каждого файла, для которого требуется db_con
? Или я должен явно указать общий вспомогательный файл?
Можно ли как-нибудь установить соединение где-нибудь и сделать его доступным для всех тестов и уничтожить в конце?