0

以下は、Erlang で作成された単純な IRC ボット モジュールです: IRC Bot

MECK を使用して関数 connect および parse_line のテストケースを作成するのを誰かが手伝ってくれませんか?

connect(Host, Port) ->
        {ok, Sock} = gen_tcp:connect(Host, Port, [{packet, line}]),
        % According to RFC1459, we need to tell the server our nickname and username
        gen_tcp:send(Sock, "NICK " ++ ?nickname ++ "\r\n"),
        gen_tcp:send(Sock, "USER " ++ ?nickname ++ " blah blah blah blah\r\n"),
        loop(Sock).

parse_line(Sock, [User,"PRIVMSG",Channel,?nickname|_]) ->
        Nick = lists:nth(1, string:tokens(User, "!")),
        irc_privmsg(Sock, Channel, "You talkin to me, " ++ Nick ++ "?");            

parse_line(Sock, [_,"376"|_]) ->
        gen_tcp:send(Sock, "JOIN :" ++ ?channel ++ "\r\n");

parse_line(Sock, ["PING"|Rest]) ->
        gen_tcp:send(Sock, "PONG " ++ Rest ++ "\r\n");

parse_line(_, _) ->
        0.

ありがとうございます。MECK を使用して入力/出力、リストに関する単純な Erlang テストケースを作成する方法は既に知っていますが、この IRC ボットは私の現在の能力をはるかに超えているようです。

4

1 に答える 1

1

解析コードと出力コードを残りのロジックから分割することをお勧めします。このような低レベルの機能をテストする理由はほとんどありませんが、低レベルのインターフェースとコードの「中間」に関数を追加すると、Meck を使用しなくてもテスト ケースを簡単に作成できます。

于 2013-09-15T18:49:39.590 に答える