-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathminimock
74 lines (68 loc) · 2.04 KB
/
minimock
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
63
64
65
66
67
68
69
70
71
72
73
74
{{$func := .Func}}
func {{ $func.TestName }}(t *testing.T) {
{{- if (gt $func.NumParams 0) }}
type args struct {
{{ range $param := params $func }}
{{- $param}}
{{ end }}
}
{{ end -}}
tests := []struct {
name string
{{- if $func.IsMethod }}
init func(t minimock.Tester) {{ ast $func.ReceiverType }}
inspect func(r {{ ast $func.ReceiverType }}, t *testing.T) //inspects {{ ast $func.ReceiverType }} after execution of {{$func.Name}}
{{ end }}
{{- if (gt $func.NumParams 0) }}
args func(t minimock.Tester) args
{{ end }}
{{ range $result := results $func}}
{{ want $result -}}
{{ end }}
{{- if $func.ReturnsError }}
wantErr bool
inspectErr func (err error, t *testing.T) //use for more precise error evaluation
{{ end -}}
}{
{{- if eq .Comment "" }}
//TODO: Add test cases
{{else}}
//{{ .Comment }}
{{end -}}
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mc := minimock.NewController(t)
defer mc.Wait(time.Second)
{{if (gt $func.NumParams 0) }}
tArgs := tt.args(mc)
{{ end}}
{{- if $func.IsMethod -}}
receiver := tt.init(mc)
{{ if (gt $func.NumResults 0) }}{{ join $func.ResultsNames ", " }} := {{end}}receiver.{{$func.Name}}(
{{- range $i, $pn := $func.ParamsNames }}
{{- if not (eq $i 0)}},{{end}}tArgs.{{ $pn }}{{ end }})
if tt.inspect != nil {
tt.inspect(receiver, t)
}
{{ else }}
{{ if (gt $func.NumResults 0) }}{{ join $func.ResultsNames ", " }} := {{end}}{{$func.Name}}(
{{- range $i, $pn := $func.ParamsNames }}
{{- if not (eq $i 0)}},{{end}}tArgs.{{ $pn }}{{ end }})
{{end}}
{{ range $result := $func.ResultsNames }}
{{ if (eq $result "err") }}
if tt.wantErr {
if assert.Error(t, err) && tt.inspectErr!= nil {
tt.inspectErr(err, t)
}
} else {
assert.NoError(t, err)
}
{{ else }}
assert.Equal(t, tt.{{ want $result }}, {{ $result }}, "{{ receiver $func }}{{ $func.Name }} returned unexpected result")
{{end -}}
{{end -}}
})
}
}