2017-02-10 49 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). 
相關問題