A Mocha like BDD testing framework for Go
No extensive documentation nor complicated steps to get it running
Run tests as usual with go test
Colorful reports and beautiful syntax
Inspired by the flexibility and simplicity of Node BDD and frustrated by the rigorousness of Go way of testing, we wanted to bring a new tool to write self-describing and comprehensive code.
- Preserve the exact same syntax and behaviour as Node's Mocha
- Nest as many
DescribeandItblocks as you want - Use
Before,BeforeEach,AfterandAfterEachfor setup and teardown your tests - No need to remember confusing parameters in
DescribeandItblocks - Use a declarative and expressive language to write your tests
- Plug different assertion libraries (Gomega supported so far)
- Skip your tests the same way as you would do in Mocha
- Two line setup is all you need to get up running
Since go test is not currently extensive, you will have to hook Goblin to it. You do that by
adding a single test method in your test file. All your goblin tests will be implemented inside this function.
package foobar
import (
"testing"
. "goblin"
)
func Test(t *testing.T) {
g := Goblin(t)
g.Describe("Numbers", func() {
g.It("Should add two numbers ", func() {
g.Assert(1+1).Equal(2)
})
g.It("Should match equal numbers", func() {
g.Assert(2).Equal(4)
})
g.It("Should substract two numbers")
})
}Ouput will be something like:
Nice and easy, right?
Gomega is a nice assertion framework. But it doesn't provide a nice way to hook it to testing frameworks. It should just panic instead of requiring a fail function. There is an issue about that here. While this is being discussed and hopefully fixed, the way to use Gomega with Goblin is:
package foobar
import (
"testing"
. "goblin"
. "github.com/onsi/gomega"
)
func Test(t *testing.T) {
g := Goblin(t)
//special hook for gomega
RegisterFailHandler(func(m string, _ ...int) { g.Fail(m) })
g.Describe("lala", func() {
g.It("lslslslsls", func() {
Expect(1).To(Equal(10))
})
})
}We do have a couple of issues pending we'll be addressing soon. But feel free to contribute and send us PRs (with tests please 😄).
Special thanks to Leandro Reox (Leitan) for the goblin logo.


