3

Cowboy に基づく Erlang アプリケーションがあり、それをテストしたいと考えています。

以前は wooga のライブラリetest_httpをこの種のタスクに使用していましたが、これがカウボーイで使用されている方法であることに気付いたので、一般的なテストを使用することから始めたいと思います。非常に基本的なテストをセットアップしようとしましたが、正しく実行できません。

基本的なサンプルecho_getをテストするためのサンプルを提供して、サンプルに含まれる Makefile を使用してコンソールからテストを実行する正しい方法を教えてください。

4

3 に答える 3

1

以下は、hello_world アプリケーションとその依存関係を開始しますが、./_rel のバージョンではなく、最近コンパイルされたバージョンを使用します。それはあなたが望むものかもしれませんし、そうでないかもしれませんが、それは回避しますtimer:sleep(1000)

-module(hello_world_SUITE).
-include_lib("common_test/include/ct.hrl").
-export([all/0, init_per_suite/1, end_per_suite/1]).
-export([http_get_hello_world/1]).

all() ->
    [http_get_hello_world].

init_per_suite(Config) ->
    {ok, App_Start_List} = start([hello_world]),
    inets:start(),
    [{app_start_list, App_Start_List}|Config].

end_per_suite(Config) ->
    inets:stop(),
    stop(?config(app_start_list, Config)),
    Config.

http_get_hello_world(_Config) ->
    {ok, {{_Version, 200, _ReasonPhrase}, _Headers, Body}} =
        httpc:request(get, {"http://localhost:8080", []}, [], []),
    Body = "Hello World!\n".

start(Apps) ->
    {ok, do_start(_To_start = Apps, _Started = [])}.

do_start([], Started) ->
    Started;
do_start([App|Apps], Started) ->
    case application:start(App) of
    ok ->
        do_start(Apps, [App|Started]);
    {error, {not_started, Dep}} ->
        do_start([Dep|[App|Apps]], Started)
    end.

stop(Apps) ->
    _ = [ application:stop(App) || App <- Apps ],
    ok.
于 2014-07-10T15:02:51.237 に答える
0

https://github.com/extend/gunを使用

提供された例を実行するには(「user」フォルダーの「gun」を考慮): ct_run -suite twitter_SUITE.erl -logdir ./results -pa /home/user/gun/deps/*/ebin /home/user/gun/ebin

于 2014-09-09T04:18:18.450 に答える