php - 使用数据库进行 Laravel 测试 - 每个测试的单个事务未按预期工作
问题描述
我正在使用Laravel 7.30.4、PHPUnit 8.5.14和MySQL 8.0.17
所以我已经在我正在进行的项目中编写了一些测试,有时测试没有充分的理由失败,或者至少我们无法说出问题(它发生在 200 分之 1 中)。然后我们意识到写入数据库的测试没有重置/回滚他们写入的数据,这有时会导致其他测试失败。我已经尝试了一些东西,它们似乎都不起作用,对我来说
- 在 Laravel 5.7 中重置数据库- 没有做任何事情
- 每次测试后重置数据库 - Laravel 7.x - 导致错误
- 使用事务重置数据库 - Laravel 5.4 - 也不起作用
我的表引擎都设置为InnoDB
. protected $connectionsToTransact = ['mysql'];
当我使用旧的Resetting DB using transactions - Laravel 5.4方法时,我还尝试添加到我的测试中。除了正常的数据库迁移之外,我还使用播种机。
我读过很多文章,有人说这是因为 MySQL 不支持嵌套事务(这里)。那么为什么它在“正常”的开发和生产系统中工作呢?
谢谢你的帮助
解决方案
推荐阅读
- c# - 流编写器未将所有数据写入文件
- android - 为什么android WebView在POST请求的情况下无法下载文件?
- python-social-auth - django social auth 解析模板中的后端名称和uid
- java - 引号中的 Sqoop 导入表参数失败
- jsp - 重命名 JSP 后未找到错误 java.lang.NoClassDefFoundError
- javascript - 在表单上使用 jQuery 的 preventDefault() 后如何使用 PHP 重定向用户?
- r - 如何将 R 代码已完成该过程并生成 csv 文件的信号传递给 Spark?
- autosys - Autosys 作业失败
- c# - 如何构建 Web API 代码以使链接支持 api/values/{id}/name
- google-cloud-dataflow - 优化 Apache Beam/DataFlow 中的重复转换