【发布时间】:2018-07-21 08:36:33
【问题描述】:
我的测试使用 trait RefreshDatabase 在开始测试之前“迁移新鲜”并为每种测试方法使用事务。
迁移工作正常,但事务根本不工作。
我尝试公开我的设置:
- MariaDB 10.1 在 docker 容器中运行(我已经证明我的测试中使用的所有表都在 InnoDB 中,因此支持事务)
- 基础测试类使用
RefreshDatabase - 我尝试使用单独的连接与
$connectionsToTransact一起进行测试,并使用默认连接进行测试。交易也不行
我的设置方法:
protected function setUp()
{
parent::setUp();
Queue::fake();
}
您可以在此 Gist 中找到完整的 Test Class 和 Test 基类: https://gist.github.com/patriziotomato/e25de1e160dace08edefa682b64bd150
我已经尝试调试,并且还归结为 PDO 启动和回滚事务,所以看起来 laravel 代码尝试进行事务和回滚,但它对我的测试没有任何影响。
我需要想法还有什么可能出错的地方
【问题讨论】:
-
您是否在需要时致电
setUp()和tearDown()? -
将我的
setUp()方法添加到我原来的问题中 -
你在开发一个包吗?为什么不使用
sqlite而不是适当的数据库? -
在最新版本的 Laravel 5.6 中修复了一个与测试中的
RefreshDatabase相关的错误。尝试升级到最新版本的 5.6 -
您指的是哪个修复程序?
标签: laravel testing pdo transactions mariadb