Как мне объединить одну и ту же функцию с несколькими наборами значений параметров?
Я пытаюсь сделать звонок application:get_env
, но я тестирую функцию, которая вызывает ее с двумя разными наборами аргументов.
Я настроил два отдельных meck:expect
такие вызовы, но когда тестируемая функция пытается вызвать application:get_env(my_app, my_param_one)
это терпит неудачу и бросает error:function_clause
с undefined
,
meck:expect(application, get_env, fun(my_app, my_param_one) -> {ok, "my_value_one"} end),
meck:expect(application, get_env, fun(my_app, my_param_two) -> {ok, "my_value_two"} end),
Как я могу выбрать одну и ту же функцию с разными наборами значений параметров?
1 ответ
Второй meck
переписывает первый.
Всякий раз, когда вы определяете функцию в Erlang путем сопоставления с образцом для различных наборов значений, вы разделяете каждый набор шаблонов точкой с запятой, например так:
-module(sample).
-export([create_greeting/2]).
create_greeting("Grant", _Greeting) -> io:format("Good day sir!");
create_greeting(Name, Greeting) -> io:format("~s, ~s!", [Greeting, Name]).
Точно так же, когда вы настраиваете meck
операторы, определите функцию один раз, но разделите каждый набор шаблонов / аргументов точкой с запятой, например:
meck:expect(application, get_env, fun(my_app, my_param_one) -> {ok, "my_value_one"};
(my_app, my_param_two) -> {ok, "my_value_two"}
end),