2012-02-26 26 views
8

Escribo una API Haskell JSON y me gustaría escribir algunas pruebas. La cosa es muy pesada, así que creo que tiene más sentido escribir algunas pruebas funcionales: (Agregar un Foo, ver si/foos/lo devuelve), etc.Haskell Pruebas funcionales contra una API JSON

He leído acerca de QuickCheck, por supuesto, pero parece enfocarse en probar el código puro.

¿Cómo debo escribir/ejecutar pruebas funcionales que necesiten probar una API? Si es importante, estoy usando Scotty/WAI. Aunque un ejemplo sería genial, un buen par de enlaces y algunos consejos estarían bien.

+0

pregunta relacionada: ¿Cuál es la biblioteca de cliente HTTP más simple? Como en, maneja PUT/DELETE, easy, establece el encabezado Content-Length para usted? –

+0

Por curiosidad, ¿cuál es su caso de uso que está escribiendo otra biblioteca JSON en lugar de usar una existente? – ivanm

+0

¿Por qué es IO pesado? ¿Estás seguro de que no se puede refactorizar para que una mayor cantidad sea pura? –

Respuesta

3

Nunca lo he usado, pero QuickCheck realmente hace prueba de prueba de código monádico. Mire Testing IO actions with Monadic QuickCheck para más información. Si su API tiene algunas invariantes que son fáciles de expresar, esta es probablemente una buena forma de probarla. (En mi experiencia con código puro, QuickCheck cubre más casos de esquina de lo que puedo pensar, lo que lo hace muy útil.)

+0

Lo hice funcionar de manera similar a esto: https://gist.github.com/967505, pero golpea la llamada api 100x, lo que parece exagerado. ¿Alguna forma de marcarlo? ¿Debería? –

+0

Puede usar algo como 'quickCheckWith stdArgs {maxSuccess = 25} someProp' para ejecutar una prueba con 25 argumentos en lugar de 100. –

Cuestiones relacionadas