Python で WebTest を使用し、Django でテスト クライアントを使用し、Ruby on Rails で機能または統合テストを使用して実行できるように、mochiweb アプリの高レベルのテストを実行したいと考えています。私はそれを行う方法についてあまりうるさいわけではありません。基本的には、HTTP リクエストを送信またはシミュレートし、結果に対してアサーションを行いたいだけです。
Req:respond()requests ハンドラーが自分自身を呼び出さずに tuple を返すように、コードをリファクタリングしました{Code, Headers, Body}。これにより、 でダミーのリクエストを作成し
mochiweb_request:new()、それらをリクエスト ディスパッチャに渡し、EUnit を使用して結果に対してアサーションを行うことができます。
make_request(Method, Path) ->
Request = mochiweb_request:new(nil, Method, Path, {1, 1},
mochiweb_headers:make([{"Accept", "text/html"}])),
Response = myapp:dispatch(Request),
Response.
signin_test() ->
{Code, _, _} = make_request('GET', "/signin"),
?assertEqual(Code, 200),
ok.
今私の問題は、POST リクエストをテストする方法です。私はそれを可能にするものをmochiwebで見つけませんでした. mochiweb コードを読むReq:parse_post()と、 が呼び出されると、ソケットの読み取りがトリガーされるようです。src/mochiweb.erlで興味深いテスト コードを見つけました。どうやらこれには、HTTP メッセージの作成、ソケットへの書き込み、および応答の読み取りが含まれます。私は自分のテスト コードでこれを実行しようとしましたが、数時間後にはどこにも到達できませんでした。私は正しい方向に進んでいるかどうか疑問に思い始めています。たぶん、HTTP 配管から機能をさらに切り離す必要があるかもしれません。呼ばないReq:parse_post()私のリクエストハンドラーの中から。私が考えている別の解決策は、サードパーティの Web テスト ライブラリを使用することです。Erlang で書かれている必要はありません。Ruby や Python、あるいは Selenium の何かかもしれません。
では、mochiweb アプリの機能テストまたは統合テストを行うには、どのソリューションをお勧めしますか?