【问题标题】:Writing Meck testcases for gen_tcp function为 gen_tcp 函数编写 Mock 测试用例
【发布时间】:2013-09-16 02:49:39
【问题描述】:

这是一个由 Erlang 编写的简单 IRC bot 模块: 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 机器人似乎远远超出了我目前的能力。

【问题讨论】:

  • 您的实际问题是什么?

标签: erlang irc eunit meck


【解决方案1】:

我建议将解析代码和输出代码从其余逻辑中分离出来。几乎没有任何理由测试这种低级功能,但如果您在低级接口和代码“之间”添加函数,您甚至可以轻松编写测试用例,甚至无需使用 Meck。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2012-10-03
    • 2018-12-18
    • 2021-06-12
    • 2019-10-01
    • 1970-01-01
    相关资源
    最近更新 更多