Я занимаюсь разработкой веб-приложения на C ++ и использую PostgreSQL с libpqxx
в Ubuntu 16.04. Проблема, с которой я столкнулся, заключается в том, что мне нужен переносимый (через системы Linux) способ запуска моих модульных тестов.
Теперь у меня есть класс, который управляет вызовами базы данных. Я хотел бы проверить, как этот класс действует в моих модульных тестах. Для этого, каждый раз, когда я запускаю юнит-тест, я хотел бы:
- Создать временного пользователя
- Создание фиктивной БД
- запустить мои тесты на нем
- удалить БД
- удалить пользователя
Теперь с Google тестами все в порядке. Я могу создать приспособление, которое будет воспроизводить их все. НО ...
Как я могу создать пользователя с паролем за один вызов (без запроса пароля), чтобы я мог создать этого пользователя на ходу и запускать свои тесты?
Руководство , по-видимому, не предоставляет способ указать пароль в аргументе. Я надеялся сделать что-то вроде этого:
system("createuser " + username + " -password abcdefg");
, где system()
запускает команду терминала. Затем я могу подключиться к серверу БД с этим именем пользователя и паролем для проведения модульных тестов.
Другой неудачной попыткой для меня было передать sql-запрос, который бы создал пользователя через терминал:
system("psql -c \"CREATE ROLE joe PASSWORD 'aabbccdd';\"")
Когда я это делаю, я получаю ошибку:
psql: FATAL: database "user" does not exist
где user
- мое имя пользователя в Unix.
Помните, что я не могу подключиться к серверу с libpqxx
, потому что у меня еще нет учетных данных (как временного пользователя). Правильно? Пожалуйста, поправьте меня, если я ошибаюсь.
Есть ли способ сделать то, что я планирую здесь, и запустить модульные тесты без вмешательства пользователя?