2012-02-26 18 views
8

Bir Haskell JSON API'si yazıyorum ve bazı testler yazmak istiyorum. Şey, gerçekten ağır IO, bu yüzden bazı fonksiyonel testleri yazmak için en mantıklı olduğunu düşünüyorum: (Bir Foo ekleyin,/foos/onu döndürür bakın), vbHaskell Bir JSON API'sine karşı İşlevsel Testler

QuickCheck hakkında okudum elbette, ama saf kodu test etmeye odaklanmış görünüyor. Bir API'yi sınamak için gereken işlevsel testleri nasıl yazmalıyım/çalıştırmalıyım? Önemliyse, Scotty/WAI kullanıyorum. Bir örnek harika olsa da, iyi bir çift bağlantılar ve bazı tavsiyeler iyi olurdu.

+0

İlgili soru: En basit HTTP istemci kitaplığı nedir? Gibi, PUT/DELETE kolları, kolay, sizin için Content-Length üstbilgisini ayarlar? –

+0

Merak etme, mevcut olanı kullanmak yerine başka bir JSON kitaplığı yazdığınızın kullanım durumu nedir? – ivanm

+0

Neden bu kadar ağır? Daha fazlaının saf olması için yeniden düzenlenemeyeceğinden emin misiniz? –

cevap

3

Hiç kullanmadım, ancak QuickCheck aslında destek sınama tekdüzen kodunu destekler. Daha fazla bilgi için Testing IO actions with Monadic QuickCheck'a bakın. Eğer api'nizin ifade etmesi kolay bazı değişmezler varsa, bu muhtemelen test etmek için iyi bir yoldur. (Saf kodla ilgili deneyimlerimde, QuickCheck, düşünebildiğimden çok daha fazla köşe vakası içeriyor, bu da onu çok kullanışlı kılıyor.)

+0

Buna benzer şekilde çalışıyorum: https://gist.github.com/967505, fakat overpi sayısı gibi görünen 100x api çağrısına ulaşıyor. Bunu çevirmenin herhangi bir yolu var mı? Yapmalımıyım? –

+0

100 yerine 25 argümanla bir test yapmak için 'quickCheckWith stdArgs {maxSuccess = 25} someProp' gibi bir şeyi kullanabilirsiniz. –

İlgili konular