1

我有一个 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 中测试这种场景吗?

4

1 回答 1

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 以停止它。

您可以在此处找到有关固定装置的更多信息

HTH,阿林

于 2012-10-01T16:41:18.867 回答