Наименее хрупким подходом к тестированию генерации запросов было бы создание запроса, который вы ожидаете «вручную» в тесте.
Один такой тест может выглядеть следующим образом:
expected_query = from m in QM.Test.Model, where: like(m.first_name, "%Ham %")
opts = %{
"$where" => %{"first_name" => %{"$like" => "%Ham %"}}
}
assert build(QM.Test.Model, opts) == expected_query
Это, очевидно, все еще соединяет ваши тесты с Ecto
.Но это гарантирует, что ваши тесты не сломаются при малейшем изменении версии.Только основной выпуск может привести к срыву тестов, но такой выпуск также приведет к сбою приложения, что, в свою очередь, лишает смысла.