问题描述
我想编写一个端到端的测试,在整个过程的某个阶段将搜索具有特定 id 的模型,并根据它更新一些数据。为了避免在生产环境中运行时接触任何真实数据,我知道我们可以使用 Laravel Faker 创建模型的假实例,然后在其上运行操作,即
在测试开始时我可以运行:
$someModel = factory(SomeModel::class)->create();
根据我的理解,这将在数据库中创建一个具有自己唯一 ID 的实例。完成测试后,我有两个关于该实例的问题...
- 在使用 parent::teardown() 或类似方法时,条目是否仍然存在,还是被设计自动删除?
- 如果我必须手动删除它,是否会在 ids 中跳过一个条目,比如我创建的分配了 id 20 的实例不再存在,所以任何查看表的人都会看到 ids: ...18,19、21……等等?
对我来说,我不太确定将虚拟数据保存在生产数据库中是否可以,这完全没问题吗?
解决方法
要重申@miken32 所说的话,请尽量避免在生产中运行测试,但如果这样做,则必须使用事务以确保测试中没有任何内容。