在内存中sqlite尽管设置仍然是空的

前端之家收集整理的这篇文章主要介绍了在内存中sqlite尽管设置仍然是空的前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我按照站点 Testing Symfony Apps with a Disposable Database教程.
我在我的测试用例中添加了Fixtures,并且在SetUp期间没有出现错误.如果我在灯具中添加一个错误(例如,将nullable = false字段留空),则会显示错误,因此此代码肯定会被执行.

我的配置:

  1. doctrine:
  2. dbal:
  3. default_connection: memory
  4. connections:
  5. memory:
  6. driver: pdo_sqlite
  7. memory: true
  8. charset: UTF8

我的WebTestCase中的SetUp:

  1. protected function setUp() {
  2. parent::setUp();
  3. self::bootKernel();
  4. DatabasePrimer::prime(self::$kernel);
  5. $this->loadFixtures([
  6. 'AppBundle\DataFixtures\ORM\UserData','AppBundle\DataFixtures\ORM\ArtistData'
  7. ]);
  8. }

然而,在我的WebTestCase中,似乎没有表存在.
输出抛出一个Doctrine异常,说我的表不存在.

  1. sqlSTATE[HY000]: General error: 1 no such table: my_user_table

如果我在文件中切换到sql_lite,一切正常,没有任何其他更改:

  1. dbal:
  2. default_connection: file
  3. connections:
  4. file:
  5. driver: pdo_sqlite
  6. path: %kernel.cache_dir%/test.db
  7. charset: UTF8

任何人都有成功的说教程或使用sqlite内存数据库进行单元测试,并有任何提示或想法?

更新:
我将我的安装程序更改为此以确保内核不会在其间关闭.它没有帮助:

  1. parent::setUp();
  2. $this->client = $this->getClient();
  3. MemoryDbPrimer::prime(self::$kernel);
  4. $this->loadFixtures([
  5. 'AppBundle\DataFixtures\ORM\UserData','AppBundle\DataFixtures\ORM\ArtistData'
  6. ]);
当你
  1. $client->request(<METHOD>,<URL>);

哪个叫

  1. Symfony\Bundle\FrameworkBundleClient::doRequest($request)

请求后,内核默认关闭,内存数据库删除.

如果你打电话

  1. client->disableReboot();

在测试的setup()函数中,这将禁用行为,并且您可以运行整个套件.

猜你在找的Sqlite相关文章