テスト時に 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
黒魔術で設計の不備(テスタビリティの低さ)を誤摩化すなという事だね。