2017-02-10 62 views
1

我在一个模块中有一个函数,它具有多个函数子句,用于相同的函数名称但功能不同。如何meck:期望一个具有多个部分的函数

例子:

-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?

回答

2

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

梅克以同样的方式工作,将三个函数视为不同的函数,而没有任何关系。 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). 
相关问题