diff --git a/README.md b/README.md index f368abe..e554e23 100644 --- a/README.md +++ b/README.md @@ -1 +1,145 @@ -# mocktesting +
+ + Mock *testing.T for the purpose of testing test helpers. + +
+ + + +## Import + +```go +import "github.com/jimeh/go-mocktesting" +``` + +## Usage + +```go +func Example_basic() { + assertTrue := func(t testing.TB, v bool) { + if v != true { + t.Error("expected false to be true") + } + } + + mt := mocktesting.NewT("TestMyBoolean1") + assertTrue(mt, true) + fmt.Printf("Name: %s\n", mt.Name()) + fmt.Printf("Failed: %+v\n", mt.Failed()) + fmt.Printf("Aborted: %+v\n", mt.Aborted()) + + mt = mocktesting.NewT("TestMyBoolean2") + assertTrue(mt, false) + fmt.Printf("Name: %s\n", mt.Name()) + fmt.Printf("Failed: %+v\n", mt.Failed()) + fmt.Printf("Aborted: %+v\n", mt.Aborted()) + fmt.Printf("Output: %s\n", strings.Join(mt.Output(), "")) + + // Output: + // Name: TestMyBoolean1 + // Failed: false + // Aborted: false + // Name: TestMyBoolean2 + // Failed: true + // Aborted: false + // Output: expected false to be true +} +``` + +```go +func Example_fatal() { + requireTrue := func(t testing.TB, v bool) { + if v != true { + t.Fatal("expected false to be true") + } + } + + mt := mocktesting.NewT("TestMyBoolean1") + requireTrue(mt, true) + fmt.Printf("Name: %s\n", mt.Name()) + fmt.Printf("Failed: %+v\n", mt.Failed()) + fmt.Printf("Aborted: %+v\n", mt.Aborted()) + + mt = mocktesting.NewT("TestMyBoolean2") + mocktesting.Go(func() { + requireTrue(mt, false) + fmt.Println("This is never executed.") + }) + fmt.Printf("Name: %s\n", mt.Name()) + fmt.Printf("Failed: %+v\n", mt.Failed()) + fmt.Printf("Aborted: %+v\n", mt.Aborted()) + fmt.Printf("Output: %s\n", strings.Join(mt.Output(), "")) + + // Output: + // Name: TestMyBoolean1 + // Failed: false + // Aborted: false + // Name: TestMyBoolean2 + // Failed: true + // Aborted: true + // Output: expected false to be true +} +``` + +```go +func Example_subtests() { + requireTrue := func(t testing.TB, v bool) { + if v != true { + t.Fatal("expected false to be true") + } + } + + mt := mocktesting.NewT("TestMyBoolean") + mt.Run("true", func(t testing.TB) { + requireTrue(t, true) + }) + fmt.Printf("Name: %s\n", mt.Name()) + fmt.Printf("Failed: %+v\n", mt.Failed()) + fmt.Printf("Sub1-Name: %s\n", mt.Subtests()[0].Name()) + fmt.Printf("Sub1-Failed: %+v\n", mt.Subtests()[0].Failed()) + fmt.Printf("Sub1-Aborted: %+v\n", mt.Subtests()[0].Aborted()) + + mt.Run("false", func(t testing.TB) { + requireTrue(t, false) + fmt.Println("This is never executed.") + }) + fmt.Printf("Failed: %+v\n", mt.Failed()) + fmt.Printf("Sub2-Name: %s\n", mt.Subtests()[1].Name()) + fmt.Printf("Sub2-Failed: %+v\n", mt.Subtests()[1].Failed()) + fmt.Printf("Sub2-Aborted: %+v\n", mt.Subtests()[1].Aborted()) + fmt.Printf("Sub2-Output: %s\n", strings.Join(mt.Subtests()[1].Output(), "")) + + // Output: + // Name: TestMyBoolean + // Failed: false + // Sub1-Name: TestMyBoolean/true + // Sub1-Failed: false + // Sub1-Aborted: false + // Failed: true + // Sub2-Name: TestMyBoolean/false + // Sub2-Failed: true + // Sub2-Aborted: true + // Sub2-Output: expected false to be true +} +``` + +## Documentation + +Please see the +[Go Reference](https://pkg.go.dev/github.com/jimeh/go-mocktesting#section-documentation) +for documentation and examples. + +## License + +[MIT](https://github.com/jimeh/go-mocktesting/blob/main/LICENSE)