【问题标题】:How do I meck the same function with multiple sets of parameter values?如何使用多组参数值来使用相同的函数?
【发布时间】:2018-06-28 15:54:47
【问题描述】:

我正在尝试调用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),

我怎样才能用不同的参数值集找出相同的函数?

【问题讨论】:

    标签: erlang eunit meck


    【解决方案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),
    

    【讨论】:

      猜你喜欢
      • 2021-08-04
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 2017-07-20
      • 2021-07-07
      相关资源
      最近更新 更多