2012-02-26 3 views
8

Я пишу Haskell JSON API, и я бы хотел написать несколько тестов. Дело в том, что я действительно тяжелый, поэтому я думаю, что имеет смысл написать некоторые функциональные тесты: (добавьте Foo, посмотрите, если/foos/возвращает его) и т. Д.Функциональные тесты Haskell против API JSON

Я читал о QuickCheck, конечно, но, похоже, он сосредоточен на тестировании чистого кода.

Как написать/запустить функциональные тесты, требующие тестирования API? Если это имеет значение, я использую Scotty/WAI. Хотя пример будет замечательным, хорошие ссылки на пару и некоторые советы будут в порядке.

+0

Связанный вопрос: Что это самое простая клиентская библиотека HTTP? Как и в, обрабатывает PUT/DELETE, легко, задает для вас заголовок Content-Length? –

+0

Из любопытства, что ваш прецедент, что вы пишете другую библиотеку JSON, а не используете существующую? – ivanm

+0

Почему он тяжелый? Вы уверены, что он не может быть реорганизован, чтобы больше его было чистым? –

ответ

3

Я никогда не использовал его, но QuickCheck фактически делает поддерживает тестирование монадического кода. Посмотрите на Testing IO actions with Monadic QuickCheck для получения дополнительной информации. Если ваш api имеет некоторые инварианты, которые легко выразить, это, вероятно, хороший способ проверить его. (По моему опыту с чистым кодом QuickCheck охватывает больше случаев, чем я могу придумать, что делает его очень полезным.)

+0

У меня он работает аналогично этому: https://gist.github.com/967505, но он попадает в api call 100x, который кажется излишним. Любой способ набрать это? Нужно ли мне? –

+0

Вы можете использовать что-то вроде 'quickCheckWith stdArgs {maxSuccess = 25} someProp' для запуска теста с 25 аргументами вместо 100. –