テスト時に smerl.erl を使って依存しているモジュールをモックに置き換える

DI しとけって話なんだろうけど(w;

% ..snip..
-module(mock_foo).
% ..snip..
-export([setup/0, cleanup/0]).
% ..snip..
-define(REAL_MODULE, foo).
% ..snip..
setup() ->
  {ok, Mock} = smerl:for_module(?MODULE),
  smerl:compile(smerl:set_module(Mock, ?REAL_MODULE)).

cleanup() ->
  code:purge(?REAL_MODULE),
  code:load_file(?REAL_MODULE).
% ..snip..

Common test と組み合わせると、一度、モックと入れ替えたモジュールは、Coverage log が情報が表示されないので悲しい orz
黒魔術で設計の不備(テスタビリティの低さ)を誤摩化すなという事だね。