如何使用多组参数值来处理同一个函数?

How do I meck the same function with multiple sets of parameter values?

我正在尝试调用 application:get_env,但我正在测试一个使用两组不同参数调用它的函数。

我像这样设置了两个单独的 meck:expect 调用,但是当我正在测试的函数尝试调用 application:get_env(my_app, my_param_one) 时失败并抛出 error:function_clauseundefined

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),

我怎样才能用不同的参数值设置相同的函数?

第二个 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 语句时,定义函数一次,但用分号分隔每组 patterns/arguments,如下所示:

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),