如何测试Ecto迁移

问题描述 投票:1回答:2

我最近在Phoenix应用程序中编写了一些Ecto迁移。但是,我总是手动测试迁移。

随着我们的迁移变得越来越复杂,并且需要更改实时系统上的数据,我真的很想在部署自动测试之前编写它们。

自动测试需要:

  1. 将数据库重置到迁移之前的位置
  2. 比要测试的迁移更早运行迁移
  3. 准备数据并将其插入数据库
  4. 运行迁移
  5. 验证结果是否符合期望
  6. 清理数据库以确保即将进行的测试不会与数据冲突

我们正在使用ExUnit和ESpec,但我还没有找到只在某些特定测试之前应用某些迁移的方法。

有没有办法为Ecto迁移编写自动测试?

elixir phoenix-framework ecto ex-unit espec
2个回答
3
投票

这可以通过一些手动操作来完成。所有这些测试都应带有标签(例如@tag :migr),并应通过

作为单独的测试运行
mix test --only migr

Details

标准测试应通过]运行>

mix test --exclude migr

后者可能被设置为默认配置,因为前者我会创建mix别名。


然后您应该创建自己的任务,类似于ecto.migrate。它将汇总所有迁移,直到指定的迁移为止(这可以作为参数传递),然后执行所需的测试。


Sidenote:

测试迁移的必要性通常是代码设计的非常不好的标志。

0
投票

我建议不要在迁移中加入太多逻辑。迁移应更改数据层的结构,而不是数据本身。

© www.soinside.com 2019 - 2024. All rights reserved.