我想断言列表的大小。目前我这样做:
assert devices = Repo.all from d in device, where d.uuid == ^attrs.uuid
assert devices.first == devices.last
有更好的方法吗?
答案 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