Что вызывает ошибку "не по умолчанию" при использовании meck (Erlang)?

Я новичок (и Эрланг), и я немного борюсь с Меком. Я получаю следующую ошибку:

=ERROR REPORT==== 27-Jan-2014::16:20:05 ===
Error in process <0.1825.0> with exit value: {{not_mocked,substatsDb},    
[{meck_proc,gen_server,3,[{file,"src/meck_proc.erl"},{line,443}]},{meck_code_gen,exec,4, 
[{file,"src/meck_code_gen.erl"},{line,147}]},{substats,loop,1, 
[{file,"/Users/uyounri/gitsandbox/subpub/src/su... 

В начале моего теста я объявляю модуль для проверки:

meck:new(substats)

В самом конце моего теста последнее, что я делаю, это выгрузил модуль, который был смоделирован:

meck:unload(substats)

Кажется, что пересмешка работает, как и ожидалось, до конца теста, когда появляется вышеуказанная ошибка.

Спасибо Рич

РЕДАКТИРОВАТЬ Добавление 2? Строки debugFmt(), кажется, решило проблему; по крайней мере, я больше не получаю ошибку. Вот полная функция, которая была изменена:

stop(_) ->
meck:expect(substatsDb, stop, 1, fun(dbconn) -> ok end),
substats:stop(),
%% Note: this and the next ?debugFmt() calls prevent a meck
%% exit error.  They both have to be present to prevent the error
?debugFmt("stop:~n", []),
meck:unload(substatsDb),
?debugFmt("stop: exit~n", []).

1 ответ

Вы пытались добавить опцию сквозной при издевательстве над модулем?

meck:new(substatsDb, [passthrough])

Кроме того, вы используете модуль "substatsDb" в вызове meck: ожидаемо, но выполняете meck:new для другого модуля (подстатов), вы должны делать все для тех же модулей (новые, ожидаемые и выгрузить)

Надеюсь, поможет!

Другие вопросы по тегам