HSpec + Quickcheck1
A combinação de HSpec com Quickcheck é uma ferramenta poderosa na identificação de erros. Enquanto o primeiro automatiza os testes, o segundo multiplica a cobertura dos testes.
Para entender exatamente como estes testes funcionam, você precisa entender funções de ordem superior, que veremos mais adiante. Mas mesmo sem entender a especificação a fundo, é possível usar o seguinte código como modelo para implementar seus testes.
No caso em específico, a função soma será testada com uma centena de combinações de valores para #hs x e y.
import Test.Hspec (Spec, it, shouldBe, describe)
import Test.Hspec.Runner (configFastFail, defaultConfig, hspecWith)
import Test.QuickCheck
import Exercise (hello, olá, soma)
main :: IO ()
main = hspecWith defaultConfig {configFastFail = False} specs
specs :: Spec
specs = do
describe "soma" $ do
prop "soma números" $
\x y -> soma x y `shouldBe` x + y