如何在Elixir库Ecto / Repo中模拟/存根方法?

时间:2019-03-03 10:12:15

标签: mocking elixir phoenix-framework ecto stubbing

请告诉我如何模拟/测试Repo模块的方法?

例如:

  link = Repo.get_by(Link, short_url: url)
  db_count = Repo.aggregate(Link, :count, :id)

我需要Repo.aggregate返回10000000000进行测试。与Repo.get_by相同。

如何做到?

在Elixir中进行测试的最佳模块隔离方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是https://github.com/gialib/ex_mock自述文件中的一个示例:

defmodule MyTest do
  use ExUnit.Case, async: false

  import ExMock

  test "test_name" do
    with_mock HTTPotion, [get: fn(_url) -> "<html></html>" end] do
      HTTPotion.get("http://example.com")
      # Tests that make the expected call
      assert called HTTPotion.get("http://example.com")
    end
  end
end