1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
# ApprovalTests.go
ApprovalTests for [go](https://golang.org/)
[](https://godoc.org/github.com/approvals/go-approval-tests)
[](https://goreportcard.com/report/github.com/approvals/go-approval-tests)
[](https://codecov.io/gh/approvals/go-approval-tests)
[](https://travis-ci.org/approvals/go-approval-tests)
# Golden master Verification Library
ApprovalTests allows for easy testing of larger objects, strings and anything else that can be saved to a file (images, sounds, csv, etc...)
# Examples
## In Project
Note: ApprovalTests uses approvaltests to test itself. Therefore there are many examples in the code itself.
- [approvals_test.go](approvals_test.go)
## JSON
VerifyJSONBytes - Simple Formatting for easy comparison. Also uses the .json file extension
```go
func TestVerifyJSON(t *testing.T) {
jsonb := []byte("{ \"foo\": \"bar\", \"age\": 42, \"bark\": \"woof\" }")
VerifyJSONBytes(t, jsonb)
}
```
Matches file: approvals_test.TestVerifyJSON.received.json
```json
{
"age": 42,
"bark": "woof",
"foo": "bar"
}
```
## Reporters
ApprovalTests becomes _much_ more powerful with reporters. Reporters launch programs on failure to help you understand, fix and approve results.
You can make your own easily, [here's an example](reporters/beyond_compare.go)
You can also declare which one to use. Either at the
### Method level
```go
r := UseReporter(reporters.NewIntelliJ())
defer r.Close()
```
### Test Level
```go
func TestMain(m *testing.M) {
r := UseReporter(reporters.NewBeyondCompareReporter())
defer r.Close()
os.Exit(m.Run())
}
```
|