我正在編寫一個Haskell JSON API,我想寫一些測試。事情真的是IO重,所以我認爲寫一些功能測試是最有意義的:(添加一個Foo,看看/ foos /返回它)等。Haskell針對JSON API的功能測試
我讀過關於QuickCheck的當然,但它似乎專注於測試純代碼。
我應該如何編寫/運行需要測試API的功能測試?如果重要,我使用Scotty/WAI。雖然一個例子會很好,但是一對好的夫妻聯繫並且一些建議也可以。
我正在編寫一個Haskell JSON API,我想寫一些測試。事情真的是IO重,所以我認爲寫一些功能測試是最有意義的:(添加一個Foo,看看/ foos /返回它)等。Haskell針對JSON API的功能測試
我讀過關於QuickCheck的當然,但它似乎專注於測試純代碼。
我應該如何編寫/運行需要測試API的功能測試?如果重要,我使用Scotty/WAI。雖然一個例子會很好,但是一對好的夫妻聯繫並且一些建議也可以。
我從來沒有用過它,但QuickCheck實際上是確實支持測試一元代碼。查看Testing IO actions with Monadic QuickCheck瞭解更多信息。如果你的api有一些容易表達的不變量,這可能是測試它的好方法。 (在我與純代碼的經驗,快速檢查涵蓋多個角落的情況比我能想到的,這使得它非常有用。)
我的工作方式與此類似:https://gist.github.com/967505,但它的API調用100x,看起來像是過度殺毒。任何方式撥打下來?我是不是該? – 2012-02-28 17:43:07
你可以使用'quickCheckWith stdArgs {maxSuccess = 25} someProp'這樣的東西來運行25個參數而不是100個測試。 – 2012-02-28 18:46:52
我有一個半生不熟的(但幾乎完成)博客條目解釋如何測試圍應用與hspec。希望能幫助到你!
https://github.com/fujimura/wai-hspec-example/blob/master/testing-wai-app-with-hspec.md https://github.com/fujimura/wai-hspec-example
相關問題:什麼是最簡單的HTTP客戶端庫?和in一樣,處理PUT/DELETE,easy,爲你設置Content-Length標題? – 2012-02-26 00:58:55
出於好奇,您正在編寫另一個JSON庫而不是使用現有庫的用例是什麼? – ivanm 2012-02-26 09:46:21
爲什麼IO很重?你確定它不能被重構,所以更多的是純粹的? – 2012-02-26 11:36:55