我知道使用ruby/rspec,您可以执行以下操作,以便为对该方法进行的不同调用接收不同的返回值:
allow(double).to receive(:msg).and_return(value1, value2, value3)
Run Code Online (Sandbox Code Playgroud)
我只能使meck存储一个带有一个返回值的方法,如下所示:
meck:expect(module, some_method, fun() -> ok end)
Run Code Online (Sandbox Code Playgroud)
有没有办法让它ok
在第一次通话时返回,然后ok2
在第二次通话时返回?
您可以通过在第一次调用expectaction函数时重新定义:
meck:expect(module,
some_method,
fun() ->
%% Redefine the expect fun for next invocation
meck:expect(module,
some_method,
fun() ->
ok2
end),
ok
end).
Run Code Online (Sandbox Code Playgroud)
为此,您可以使用Meck中的两个快捷方式:
meck:sequence/4
此函数返回序列中的每个元素,直到最后一个元素.然后,无限期地返回最后一个元素.
6> meck:sequence(module, some_method, 0, [ok, ok2]).
ok
7> module:some_method().
ok
8> module:some_method().
ok2
9> module:some_method().
ok2
Run Code Online (Sandbox Code Playgroud)meck:loop/4
此函数返回循环中的每个元素.返回最后一个元素时,它将以第一个元素重新开始.
10> meck:loop(module, some_method, 0, [ok, ok2]).
ok
11> module:some_method().
ok
12> module:some_method().
ok2
13> module:some_method().
ok
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
708 次 |
最近记录: |