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を使った例。要復習