[erlang-questions] parametrized modules and unit testing

Vlad Dumitrescu vladdu55@REDACTED
Mon Feb 22 10:52:27 CET 2010


On Mon, Feb 22, 2010 at 10:28, pietje <pieter.rijken@REDACTED> wrote:
> Suppose I have 2 modules, say ma and mb, and that module ma uses
> (imports) module mb.
> I'm trying to figure out in Erlang how to write unit tests for module
> ma that do not depend on the particular
> implementation of functions in module mb.

Hi,

One simple way is to use conditional compilation; in ma use

-ifdef(TEST).
    -include_lib("eunit/include/eunit.hrl").
    -define(MB, mock_mb).
-else.
    -define(MB, mb).
-endif.

and make all calls to mb via ?MB. (Of course, you'll have to implement
a mock_mb module).


A more advanced way would be to have a central mock server where you
can register a fun for each mocked function (in any module) and use
error_handler:undefined_function to use these registered funs instead
of the real ones. This is quite complex to implement, though.

best regards,
Vlad


More information about the erlang-questions mailing list