Skip to content

Commit 2c1d499

Browse files
committed
Add examples/testing/be_library/err
1 parent 3c768ea commit 2c1d499

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# https://taskfile.dev
2+
3+
version: '3'
4+
5+
tasks:
6+
default:
7+
cmds:
8+
- go test -v
9+
ignore_error: true
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package main
2+
3+
import (
4+
"errors"
5+
"fmt"
6+
"reflect"
7+
"testing"
8+
9+
"github.com/nalgeon/be"
10+
)
11+
12+
type (
13+
ValueError struct {
14+
V int
15+
}
16+
)
17+
18+
var _ error = (*ValueError)(nil)
19+
20+
func (v *ValueError) Error() string {
21+
return fmt.Sprintf("invalid value: %d", v.V)
22+
}
23+
24+
var (
25+
ErrInvalid = errors.New("invalid value")
26+
)
27+
28+
func errSometime(v int) error {
29+
switch {
30+
case v > 100:
31+
return &ValueError{v}
32+
case v > 10:
33+
return ErrInvalid
34+
default:
35+
return nil
36+
}
37+
}
38+
39+
func TestBeErr(t *testing.T) {
40+
t.Run("ok", func(t *testing.T) {
41+
be.Err(t, errSometime(1), nil)
42+
})
43+
t.Run("ng", func(t *testing.T) {
44+
be.Err(t, errSometime(99), nil)
45+
})
46+
t.Run("return-nil", func(t *testing.T) {
47+
err := errSometime(5)
48+
be.Err(t, err, nil)
49+
})
50+
t.Run("return-err", func(t *testing.T) {
51+
err := errSometime(99)
52+
be.Err(t, err)
53+
})
54+
t.Run("check-message", func(t *testing.T) {
55+
err := errSometime(20)
56+
be.Err(t, err, "invalid") // 指定したメッセージが含まれていればOKとなる
57+
})
58+
t.Run("check-type-is", func(t *testing.T) {
59+
err := errSometime(20)
60+
be.Err(t, err, ErrInvalid)
61+
})
62+
t.Run("check-type-as", func(t *testing.T) {
63+
err := errSometime(199)
64+
be.Err(t, err, reflect.TypeFor[*ValueError]()) // Asの場合は reflect.Type を指定する
65+
})
66+
}

0 commit comments

Comments
 (0)