是否可以在 ExUnit 测试中存根(模拟?)Ecto.UUID.generate?

The*_*Fox 5 unit-testing elixir ecto

我正在使用Ecto.UUID.generate在用户模型上创建随机令牌。

在我的ExUnit测试中,我想测试调用创建路由的控制器,但是因为令牌总是随机的,我无法确定性地测试结果。

理想情况下,我希望能够在我的测试中存根Ecto.UUID.generate以便它始终创建相同的UUID,以便我可以正确测试响应。

谢谢 :)

Jos*_*lim 5

Elixir 和 Erlang 中有 mocking 解决方案,但它们使用得并不多。如果你还有兴趣,这里有一篇文章:http : //blog.29steps.co.uk/post/105715556278/testing-api-web-calls-in-elixir-using-meck

老实说,我只是避免模拟。如果您有 API,请测试返回的 ID 是否为 UUID(您可以查看是否Ecto.UUID.dump(uuid)返回{:ok, something})。如果它是一个浏览器/html 应用程序,则您可能更不关心 UUID。