如何使用多组参数值来处理同一个函数?
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_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),
我怎样才能用不同的参数值设置相同的函数?
第二个 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),
我正在尝试调用 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),
我怎样才能用不同的参数值设置相同的函数?
第二个 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),