2012-02-26 84 views
8

我正在編寫一個Haskell JSON API,我想寫一些測試。事情真的是IO重,所以我認爲寫一些功能測試是最有意義的:(添加一個Foo,看看/ foos /返回它)等。Haskell針對JSON API的功能測試

我讀過關於QuickCheck的當然,但它似乎專注於測試純代碼。

我應該如何編寫/運行需要測試API的功能測試?如果重要,我使用Scotty/WAI。雖然一個例子會很好,但是一對好的夫妻聯繫並且一些建議也可以。

+0

相關問題:什麼是最簡單的HTTP客戶端庫?和in一樣,處理PUT/DELETE,easy,爲你設置Content-Length標題? – 2012-02-26 00:58:55

+0

出於好奇,您正在編寫另一個JSON庫而不是使用現有庫的用例是什麼? – ivanm 2012-02-26 09:46:21

+0

爲什麼IO很重?你確定它不能被重構,所以更多的是純粹的? – 2012-02-26 11:36:55

回答

3

我從來沒有用過它,但QuickCheck實際上是確實支持測試一元代碼。查看Testing IO actions with Monadic QuickCheck瞭解更多信息。如果你的api有一些容易表達的不變量,這可能是測試它的好方法。 (在我與純代碼的經驗,快速檢查涵蓋多個角落的情況比我能想到的,這使得它非常有用。)

+0

我的工作方式與此類似:https://gist.github.com/967505,但它的API調用100x,看起來像是過度殺毒。任何方式撥打下來?我是不是該? – 2012-02-28 17:43:07

+0

你可以使用'quickCheckWith stdArgs {maxSuccess = 25} someProp'這樣的東西來運行25個參數而不是100個測試。 – 2012-02-28 18:46:52