在elixir中断言列表的大小

时间:2016-05-24 13:21:28

标签: elixir

我想断言列表的大小。目前我这样做:

assert devices = Repo.all from d in device, where d.uuid == ^attrs.uuid
assert devices.first == devices.last

有更好的方法吗?

1 个答案:

答案 0 :(得分:47)

Kernel.length/1将返回列表的大小:

length([1,2,3]) #3

您可以使用以下方式从Ecto查询执行此操作:

query = from d in Device, where: d.uuid == ^uuid, select: fragment("count(?)", d.id)
assert  Repo.all(query)== 3

在Ecto 2中,您可以使用Repo.aggregate/4

query = from d in Device, where: d.uuid == ^uuid)
assert Repo.aggregate(query, :count, :id) == 3