我最近在Phoenix应用程序中编写了一些Ecto迁移。但是,我总是手动测试迁移。
随着我们的迁移变得越来越复杂,并且需要更改实时系统上的数据,我真的很想在部署自动测试之前编写它们。
自动测试需要:
我们正在使用ExUnit和ESpec,但我还没有找到只在某些特定测试之前应用某些迁移的方法。
有没有办法为Ecto迁移编写自动测试?
这可以通过一些手动操作来完成。所有这些测试都应带有标签(例如@tag :migr
),并应通过
mix test --only migr
标准测试应通过]运行>
mix test --exclude migr
后者可能被设置为默认配置,因为前者我会创建
mix
别名。
然后您应该创建自己的任务,类似于ecto.migrate
。它将汇总所有迁移,直到指定的迁移为止(这可以作为参数传递),然后执行所需的测试。
Sidenote:
测试迁移的必要性通常是代码设计的非常不好的标志。我建议不要在迁移中加入太多逻辑。迁移应更改数据层的结构,而不是数据本身。