目前测试与Symfony2数据库交互的最佳做法是什么?我有一个简单的CRUD设置,我想确保我的测试是可以的.现在,我有4个测试,每个测试,确保创建,更新,删除和列表操作正在发生.
我有两个魔术方法__construct和__destruct,在我的测试用例上.在他们之中,我用“PHP app / console …”来调用exec(),以便创建数据库,创建模式并稍后删除数据库.但是,这是一个很慢的地狱,它发生在我有一个以上的测试用例.
在数据库测试和隔离这样的测试时,我应该如何进行?
数据库测试总是很慢,因为您需要在每个测试之前/之后创建/删除模式.为避免不必要的操作,您可以:
在’setUpBeforeClass’方法中创建模式;
>确保您的4个测试在一个线程中使用’@depend’注释启动;
在’tearDownAfterClass’方法中拖放模式.
对于您的测试用例,该模式将仅被创建/删除一次.
您还可以设置原则来使用一个内存sqlite数据库(这是非常快的):
doctrine: dbal: driver: pdo_sqlite path: :memory: memory: true
无论如何,’_construct’和’_destruct’不应该在PHPunit测试用例中使用,而应该使用’setUp’和’tearDown’.