Composition - smartystreets/goconvey GitHub Wiki
Writing self-documenting tests is remarkably easy with GoConvey.
Examples
First, take a look through the examples folder to get the basic idea. We'd recommend reviewing isolated_execution_test.go for a more thorough understanding of how you can compose test cases.
Functions
See GoDoc for exported functions and assertions. You'd be most interested in the convey package.
Quick tutorial
In your test file, import needed packages:
import(
"testing"
. "github.com/smartystreets/goconvey/convey"
)
(Notice the dot-notation for the convey
package, for convenience.)
Since GoConvey uses go test
, set up a Test function:
func TestSomething(t *testing.T) {
}
To set up test cases, we use Convey()
to define scope/context/behavior/ideas, and So()
to make assertions. For example:
Convey("1 should equal 1", t, func() {
So(1, ShouldEqual, 1)
})
There's a working GoConvey test. Notice that we pass in the *testing.T
object. Only the top-level calls to Convey()
require that. For nested calls, you must omit it. For instance:
Convey("Comparing two variables", t, func() {
myVar := "Hello, world!"
Convey(`"Asdf" should NOT equal "qwerty"`, func() {
So("Asdf", ShouldNotEqual, "qwerty")
})
Convey("myVar should not be nil", func() {
So(myVar, ShouldNotBeNil)
})
})
If you haven't yet implemented a test or scope, just set its function to nil
to skip it:
Convey("This isn't yet implemented", nil)
Next
Next, you should learn about the standard assertions. You may also skip ahead to executing tests or to Skip to make testing more convenient.