Mox¶
Mox is a library for defining concurrent mocks in Elixir.
https://github.com/dashbitco/mox
読むべき記事¶
Mocks and explicit contracts¶
モックに対する問題意識や思想をJoseが書いた記事
Elixir Test Mocking with Mox¶
GitHub API Clientの作成のために、 モックサーバーつまりGitHub APIのシミュレータを作ったことによるデメリットを紹介し、 それをMoxを使って改善する話が書いてある。
デメリットは
テストを書く際にモックサーバーのリターンを調べなければいけないこと
テストがモックサーバーに依存すること
explicit contractをClientに定義しなくてよくなってしまうこと
が挙げられている。
また、Moxを使うことで
クライアントのモックを作成する
ビヘイビアの定義の強制によりexplicit contractを定義できるようになる
使用するライブラリを抽象化し、設計を改善する
点を紹介している。
Elixir Patterns for Testing with Mox¶
defdelegateを使った例。要復習