我有一个gen_server导出这样的函数:
my_function(Param) ->
gen_server:cast(?SERVER, {forward, Param}).
并且像这样有一个handle_cast:
handle_cast({forward, Param}, #state{peer=Socket} = State) ->
gen_tcp:send(Socket, Param),
{noreply, State}.
在大多数情况下,使用gen_tcp连接的对等体将回复不同消息中的一个,并且我在handle_info中处理回复
handle_info({tcp, Socket, Data}) ->
io:format("Received : ~p~n", [Data]),
{noreply, State}.
有没有推荐的方法在erlang中测试这种场景?
答案 0 :(得分:0)
您可以使用设置/拆卸功能来执行类似的操作:
my_test_() -> {
setup,
fun() -> my_server:start_link() end,
fun(_) -> my_server:stop() end,
fun() ->
%% here you do all the message sending and such
end
}.
你还需要导出一个stop / 0函数,它将负责调用/强制转换gen_server以便停止它。
您可以在灯具here
上找到更多信息HTH, 阿林