Symfony / Doctrine UnitTests with SQLite memory DB
The accepted answer didn't work for me, because I was using the URL to specify the connection parameters, and although I was setting the driver to pdo_sqlite
and memory
to true
, Doctrine was still using the url
parameter from the root configuration, so I had to overwrite it.
#api/config/packages/test/doctrine.yaml
doctrine:
dbal:
url: "sqlite:///:memory:"
You can easily create entitymanager instance your self. Check this helper class You probably don't have it in symfony 2 but you can use the idea to build your own base testCaseClass and use it when needed. This even does not require to boot kernel.
I never used in memory sqlite database but for testing i do use a sqlite database that is saved.
For that you should add
# app/config/config_test.yml
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_sqlite
path: %kernel.cache_dir%/test.db
To your test config (for me config_test.yml)
You should be able to change this to in memory according to the documentation
memory (boolean): True if the SQLite database should be in-memory (non-persistent). Mutually exclusive with path. path takes precedence.
So the config should then be
# app/config/config_test.yml
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_sqlite
memory: true