Как мне объединить одну и ту же функцию с несколькими наборами значений параметров? - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь вызвать вызов 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 Ответ

0 голосов
/ 28 июня 2018

Второй 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),
...