pranavraja / behaviour

`go test` helper for BDD with dynamic examples

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

http://godoc.org/github.com/pranavraja/behaviour

Pitch

Sometimes you want to create a test suite with examples defined dynamically. For example, if you are using an API that returns recommended music, and you want to test whether each recommended music track has defined metadata, it may be nice to dynamically create test examples. This package provides a few helpers to group test examples and contexts.

Usage

package yourpackage

import (
    "testing"
    "ioutil"
    . "github.com/pranavraja/behaviour"
)

func TestRunner(t *testing.T) {
    Describe(t, "My awesome API", func(b Behaviour) {
        b.Context("Music recommendations metadata", func(b Behaviour) {
            recommendations, _ := myAwesomeRecommendations()
            for track := range recommendations {
                b.It(track.Name, func() {
                    if track.Artist == "" {
                        t.Error("track has no artist")
                    }
                })
            }
        })
    })
}

If the test fails, you will get output to t.Log like this:

--- FAIL: TestRunner (0.00 seconds)
    behaviour.go:35: My awesome API
    behaviour.go:35:   Music recommendations metadata
    behaviour.go:28:     Feeling Good
    behaviour.go:28:     Ain't No Sunshine
    yourpackage_test.go:15: track has no artist
    behaviour.go:28:     Never Let Me Go
FAIL
exit status 1
FAIL    _/home/user/go/yourpackage  0.004s

...indicating that "Ain't No Sunshine" was the failed example.

Testing

go test. Note that there is an expected failure, just to test the logging output.

About

`go test` helper for BDD with dynamic examples


Languages

Language:Go 100.0%