如何 meck:expect 具有多个参数的函数
How to meck:expect a function with multiple arities
我在一个模块中有一个函数,它有多个函数子句,函数名称相同但函数参数不同。
示例:
-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).
但是我怎样才能模拟多个参数呢?
在Erlang中,同名不同元数的函数不被认为是同一函数的子句,而是完全不同的函数。名称 func/1
、func/2
和 func/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).
我在一个模块中有一个函数,它有多个函数子句,函数名称相同但函数参数不同。
示例:
-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).
但是我怎样才能模拟多个参数呢?
在Erlang中,同名不同元数的函数不被认为是同一函数的子句,而是完全不同的函数。名称 func/1
、func/2
和 func/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).