QuickCheck catch-22 - PullRequest
       1

QuickCheck catch-22

12 голосов
/ 05 июня 2011

Я работаю над проектом на Haskell, и я начал с его организации следующим образом:

  • blah.hs содержит большую часть кода
  • blah_main.hs имеет основную программу
  • и blah_test.hs имеют контрольные примеры.

Проблема в том, что ограничение функций, экспортируемых с помощью blah.hs, означает ограничение функций, которые можно протестировать с blah_test.hs. Есть ли хороший способ обойти эту проблему? Потому что я действительно хотел бы написать тестовый код для некоторых «внутренних» функций, которые не экспортируются blah.hs.

Спасибо, Lee

Ответы [ 2 ]

18 голосов
/ 05 июня 2011

Перемещение внутренних функций из модулей Blah.* в Blah.Internal.*. Вы можете скрыть внутренние модули от пользователей вашей библиотеки, перечислив их в поле other-modules в файле blah.cabal (вместо exposed-modules, где перечислены все модули, видимые пользователям). Посмотрите на Hakyll .cabal файл для примера.

8 голосов
/ 05 июня 2011

Я согласен с Михаилом во всем, но при некоторых обстоятельствах такой раскол не представляется возможным. В этих случаях я бы рекомендовал использовать расширение CPP (C Pre-Processor), например:

module Blah
    ( public
#if TEST
    , private
#endif
    ) where
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...