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
}.

また、停止するためにgen_serverの呼び出し/キャストを担当するstop/0関数をエクスポートする必要があります。

フィクスチャの詳細については、こちらをご覧ください。

HTH、アリン

于 2012-10-01T16:41:18.867 に答える