2012-02-26 4 views
8

私はHaskell JSON APIを作成していますが、いくつかのテストを書いてみたいと思います。実際にIOは重いので、いくつかの機能テストを書くのが最も理にかなっていると思います(Fooを追加し、/ foos/returnsを参照)。JSON APIに対するHaskellの機能テスト

QuickCheckについては、純粋なコードのテストに焦点を当てているようです。

APIをテストする機能テストをどのように作成して実行する必要がありますか?重要な場合は、Scotty/WAIを使用しています。例が素晴らしいかもしれませんが、良いカップルのリンクといくつかのアドバイスはうまくいくでしょう。

+0

関連質問:最も簡単なHTTPクライアントライブラリは何ですか?のように、簡単にPUT/DELETEを処理して、Content-Lengthヘッダーを設定しますか? –

+0

好奇心の高まりから、既存のJSONライブラリを使用するのではなく、別のJSONライブラリを作成するユースケースは何ですか? – ivanm

+0

なぜIOが重いのですか?それ以上のものが純粋なものになるようにリファクタリングすることはできないと確信していますか? –

答えて

3

私は一度も使ったことがありませんが、実際にはQuickCheck でモナドコードのテストをサポートしています。詳細はTesting IO actions with Monadic QuickCheckをご覧ください。あなたのAPIに表現しやすい不変量がある場合は、おそらくこれをテストする良い方法です。 (純粋なコードでの私の経験では、QuickCheckは思うよりも多くのコーナーケースをカバーしているので、非常に便利です)。

+0

私はこれと同様に動作します:https://gist.github.com/967505、しかし、それは過度のように思われるAPI呼び出し100xをヒットします。それをダイヤルする方法はありますか?したほうがいい? –

+0

'quickCheckWith stdArgs {maxSuccess = 25} someProp'のようなものを使って、100ではなく25個の引数でテストを実行できます。 –