2012-02-26 27 views
8

Tôi đang viết API JSON Haskell và tôi muốn viết một số thử nghiệm. Điều này thực sự là IO nặng, vì vậy tôi nghĩ rằng nó làm cho ý nghĩa nhất để viết một số bài kiểm tra chức năng: (Thêm một Foo, xem nếu/foos/trả lại nó), vvThử nghiệm chức năng của Haskell đối với API JSON

Tôi đã đọc về QuickCheck tất nhiên, nhưng dường như tập trung vào việc kiểm tra mã thuần túy.

Tôi nên viết/chạy các thử nghiệm chức năng cần kiểm tra API như thế nào? Nếu có vấn đề, tôi đang sử dụng Scotty/WAI. Mặc dù một ví dụ sẽ là tuyệt vời, một vài liên kết tốt và một số lời khuyên sẽ là tốt.

+0

câu hỏi liên quan: thư viện client HTTP đơn giản nhất là gì? Như trong, xử lý PUT/DELETE, dễ dàng, đặt tiêu đề Content-Length cho bạn? –

+0

Vì tò mò, trường hợp sử dụng của bạn là bạn đang viết thư viện JSON khác thay vì sử dụng thư viện hiện có? – ivanm

+0

Tại sao IO lại nặng? Bạn có chắc chắn rằng nó không thể được tái cấu trúc để nhiều hơn nó là tinh khiết? –

Trả lời

3

Tôi chưa bao giờ sử dụng, nhưng QuickCheck thực tế không hỗ trợ mã thử nghiệm đơn thuần. Hãy xem Testing IO actions with Monadic QuickCheck để biết thêm thông tin. Nếu api của bạn có một số bất biến dễ diễn tả, thì đây có lẽ là cách tốt để kiểm tra nó. (Theo kinh nghiệm của tôi với mã thuần túy, QuickCheck bao gồm nhiều trường hợp góc hơn tôi có thể nghĩ, làm cho nó trở nên rất hữu ích.)

+0

Tôi đã nhận nó hoạt động tương tự như thế này: https://gist.github.com/967505, nhưng nó chạm vào cuộc gọi api 100x, có vẻ như quá mức cần thiết. Bất kỳ cách nào để quay số đó xuống? Tôi có nên không? –

+0

Bạn có thể sử dụng một cái gì đó như 'quickCheckWith stdArgs {maxSuccess = 25} someProp' để chạy thử nghiệm với 25 đối số thay vì 100 đối số. –

Các vấn đề liên quan