Skip to content

NicolasUmiastowski/elm-test

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

elm-test Travis build Status

Write unit and fuzz tests for your Elm code, in Elm.

Quick Start

Here are three example tests:

suite : Test
suite =
    describe "The String module"
        [ describe "String.reverse" -- Nest as many descriptions as you like.
            [ test "has no effect on a palindrome" <|
                \() ->
                    let
                        palindrome =
                            "hannah"
                    in
                        Expect.equal palindrome (String.reverse palindrome)

            -- Expect.equal is designed to be used in pipeline style, like this.
            , test "reverses a known string" <|
                \() ->
                    "ABCDEFG"
                        |> String.reverse
                        |> Expect.equal "GFEDCBA"

            -- fuzz runs the test 100 times with randomly-generated inputs!
            , fuzz string "restores the original string if you run it again" <|
                \randomlyGeneratedString ->
                    randomlyGeneratedString
                        |> String.reverse
                        |> String.reverse
                        |> Expect.equal randomlyGeneratedString
            ]
        ]

This code includes a few common things:

  • describe to add a description string to a list of tests
  • test to write a unit test
  • Expect to determine if a test should pass or fail
  • fuzz to run a function that produces a test several times with randomly-generated inputs

Check out a more complete example or a large real-world test suite for more.

Running tests locally

There are several ways you can run tests locally:

Here's how set up and run your tests using the CLI test runner.

  1. Run npm install -g elm-test if you haven't already.
  2. cd into the directory that has your elm-package.json.
  3. Run elm-test init. It will create a tests directory inside this one, with some files in it.
  4. Copy all the dependencies from elm-package.json into tests/elm-package.json. These dependencies need to stay in sync, so make sure whenever you change your dependencies in your current elm-package.json, you make the same change to tests/elm-package.json.
  5. Run elm-test.

Edit Tests.elm to introduce new tests.

Happy testing!

Running tests on CI

Here are some examples of running tests on CI servers:

Upgrading from the old elm-test

legacy-elm-test provides a drop-in replacement for the ElmTest 1.0 API, except implemented in terms of the current elm-test. It also includes support for elm-check tests.

This lets you use the latest test runners right now, and upgrade incrementally.

About

Write unit and fuzz tests for your Elm code, in Elm.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elm 99.3%
  • JavaScript 0.7%