BDD style matchers on top of elm-test and elm-check
First, follow the getting started steps from the elm-test package.
Then, install elm-test-bdd-style:
elm package install rogeriochaves/elm-test-bdd-styleTo use it, just import it on your test:
import ElmTestBDDStyle exposing (..)-- Example.elm
module Example where
import ElmTestBDDStyle exposing (..)
tests : Test
tests =
describe "Example Text"
[ it "does math correctly" <|
expect (1 + 1) toBe 2
, it "does not miscalculate things" <|
expect (2 + 2) notToBe 5
, it "compares two numbers" <|
expect (10 > 5) toBeTruthy
, it "exemplifies more complex test cases" <|
let
expression = 2 + 2
in
expect expression toBe 4
]Right now, elm-test-bdd-style comes only with toBe, notToBe and toBeTruthy, but it is very easy to create your own matchers:
toBeGreaterThan : comparable -> comparable -> Assertion
toBeGreaterThan a b = (a > b) |> toBeTruthy
tests : Test
tests =
describe "Custom matchers"
[ it "compares two numbers" <|
expect 10 toBeGreaterThan 5
]You can also lean on the power of elm-check in an idiom-concise way.
First, check-out elm-check page for installing it on your project, you will need the Investigators.
Now just import Check.Investigator and you are good to go:
import ElmTestBDDStyle exposing (..)
import Check.Investigator exposing (..)
tests : Test
tests =
describe "Property Based Testing"
[ itAlways "ends up with the same list when reversing twice" <|
expectThat
(\list -> List.reverse (List.reverse list))
isTheSameAs
(identity)
forEvery
(list int)
]And you will get a hundred runs:

You can easily mix those tests with the regular ones inside your describe.