【发布时间】:2021-06-28 08:22:40
【问题描述】:
我正在编写一个带有基本方法的基本存储库,以便从其他存储库扩展它,例如:
BaseRepository
├─ UserRepository
├─ PostRepository
└─ CommentRepository
我想用自定义测试模型测试我的BaseRepository,而不是使用实际应用程序模型(例如User、Post 等),所以我需要创建这个自定义模型及其迁移并使用它们仅在测试期间,但我更喜欢将 tose 文件放入 tests 文件夹以保持结构清洁。
有没有办法告诉 laravel 仅在测试期间加载 app/database/migrations 以外的其他迁移?
更新 #1:为什么
我想单独测试我的BaseRepository 类,所以我不会在存储库测试中使用我的任何应用程序模型,因为可能/将来对这些模型的修改/更新可能会导致存储库测试出错,例如从代码库中弃用并随后删除该模型。
这就是为什么我更喜欢使用创建的自定义模型,只是为了在我的存储库测试中使用。
【问题讨论】:
-
为什么不创建另一个数据库进行测试,然后创建
.env.testing,并配置该数据库laravel.com/docs/8.x/testing#environment -
这不是我要的,我要问的是如何迁移文件不在标准
app/database/migrations文件夹中的迁移,并且仅在测试期间进行 -
我只是想知道为什么您需要在其他文件夹中进行其他迁移?你能解释一下那部分吗?
-
更新了问题以更好地解释原因。
-
如果您的存储库依赖于模型,那么如果您更改模型中的某些内容,您还需要更新存储库测试。如果您创建另一个虚拟模型,那么每次使用您测试的虚拟模型进行测试总是会成功,那么将来如果您在真实模型中更改某些内容,然后运行测试,测试会正常,但真实代码会损坏,因为您在测试中的 repo 依赖于未更新的虚拟模型。
标签: laravel testing phpunit laravel-7