【问题标题】:How to meck:expect a function with multiple arities如何meck:期望具有多个arities的函数
【发布时间】:2017-02-10 14:56:45
【问题描述】:

我在一个模块中有一个函数,它有多个函数子句用于相同的函数名称但不同的函数参数。

例子:

-module(module_name).

-export([func/1, func/2, func/3]).

func(N) ->
    N.

func(N, K) -> 
    N * K.

func(N, K, M) ->
    N * K * M.

我想模拟这个函数以进行测试,这样它就不会将数字相乘。

我只知道如何模拟一个函数:

1> meck:expect(module_name, func, fun(N, K, M) -> N + K + M end).

但是我怎样才能为多个 arities 模拟它呢?

【问题讨论】:

    标签: function mocking erlang meck


    【解决方案1】:

    在 Erlang 中,具有相同名称和不同参数的函数不被视为同一函数的子句,而是完全不同的函数。 func/1func/2func/3 的名称暗示了这一点。

    Meck 的工作方式相同,将三个函数视为不同的函数,它们之间没有任何关系。 meck:expect 通过检查您传递给它的 fun 来确定要模拟的函数的数量,因此您可以像这样模拟三个不同的函数:

    meck:expect(module_name, func, fun(N) -> N end).
    meck:expect(module_name, func, fun(N, K) -> N + K end).
    meck:expect(module_name, func, fun(N, K, M) -> N + K + M end).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多