【发布时间】:2018-06-08 21:44:23
【问题描述】:
我正在 ExUnit 中为此库测试查询 (not the data returned from queries)。
https://github.com/tanweerdev/fat_ecto
这是我的代码:
test "returns the query where field like" do
opts = %{
"$where" => %{"first_name" => %{"$like" => "%Ham %"}}
}
assert build(QM.Test.Model, opts) ==
end
函数在控制台返回的结果是这样的:
left: #Ecto.Query<from m in QM.Test.Model,
where: like(m.first_name, ^"%Ham %")>
这里的主要目标是查看build 函数是否正确构建查询。
我不是在测试 ecto。我正在测试构建查询的函数
如何将这个结果插入到右边的to make the tests pass。
任何建议。
谢谢。
【问题讨论】:
-
您确定这是测试此逻辑的最佳方法吗?它有点测试
Ecto.Query的内部结构,并将它与它的工作方式紧密结合,这使得当你更新Ecto时它变得非常脆弱。 -
它看起来不是一个好方法...您正在测试 ecto 内部结构(已经过测试) - 如果您更新/远离 Ecto,您的所有测试都会中断
-
@SaschaWolf 我没有测试 ecto。我正在测试我的函数
build。它建立了查询。我正在测试它是否正确构建查询。 -
@script 我理解,但您的测试取决于
Ecto.Query的内部实现。因此,即使业务逻辑仍然正确,当 Ecto 更改实现时,您的测试也会中断。这就是我说你测试 Ecto 时的意思。 -
@SaschaWolf 当然这个库将依赖于 ecto 版本并且会负责更新