@@ -8,74 +8,57 @@ import (
88)
99
1010func TestGetExecutingSqlError (t * testing.T ) {
11- tests := []struct {
12- name string
13- err error
14- rawSql string
15- fixedSql string
16- params []any
17- wantErr string
18- }{
19- {
20- name : "Basic Error Test" ,
21- err : errors .New ("test error" ),
22- rawSql : "SELECT * FROM users WHERE id = @p1" ,
23- fixedSql : "SELECT * FROM users WHERE id = ?" ,
24- params : []any {1 },
25- wantErr : "dbClient: failed to execute sql\n raw error: test error\n sql:\n input sql=SELECT * FROM users WHERE id = @p1\n executing sql=SELECT * FROM users WHERE id = ?\n params:\n @p1=1" ,
26- },
27- {
28- name : "Named Parameter Test" ,
29- err : errors .New ("test error" ),
30- rawSql : "SELECT * FROM users WHERE name = @name" ,
31- fixedSql : "SELECT * FROM users WHERE name = ?" ,
32- params : []any {sql .Named ("name" , "test" )},
33- wantErr : "dbClient: failed to execute sql\n raw error: test error\n sql:\n input sql=SELECT * FROM users WHERE name = @name\n executing sql=SELECT * FROM users WHERE name = ?\n params:\n @name=test" ,
34- },
35- }
36-
37- for _ , tt := range tests {
38- t .Run (tt .name , func (t * testing.T ) {
39- gotErr := getExecutingSqlError (tt .err , tt .rawSql , tt .fixedSql , tt .params )
40- if gotErr .Error () != tt .wantErr {
41- t .Errorf ("getExecutingSqlError() error = %v, want %v" , gotErr , tt .wantErr )
42- }
43- })
44- }
11+ t .Run ("Basic Error Test" , func (t * testing.T ) {
12+ err := errors .New ("test error" )
13+ rawSql := "SELECT * FROM users WHERE id = @p1"
14+ fixedSql := "SELECT * FROM users WHERE id = ?"
15+ params := []any {1 }
16+ wantErr := "dbClient: failed to execute sql\n raw error: test error\n sql:\n input sql=SELECT * FROM users WHERE id = @p1\n executing sql=SELECT * FROM users WHERE id = ?\n params:\n @p1=1"
17+
18+ gotErr := getExecutingSqlError (err , rawSql , fixedSql , params )
19+ if gotErr .Error () != wantErr {
20+ t .Errorf ("getExecutingSqlError() error = %v, want %v" , gotErr , wantErr )
21+ }
22+ })
23+
24+ t .Run ("Named Parameter Test" , func (t * testing.T ) {
25+ err := errors .New ("test error" )
26+ rawSql := "SELECT * FROM users WHERE name = @name"
27+ fixedSql := "SELECT * FROM users WHERE name = ?"
28+ params := []any {sql .Named ("name" , "test" )}
29+ wantErr := "dbClient: failed to execute sql\n raw error: test error\n sql:\n input sql=SELECT * FROM users WHERE name = @name\n executing sql=SELECT * FROM users WHERE name = ?\n params:\n @name=test"
30+
31+ gotErr := getExecutingSqlError (err , rawSql , fixedSql , params )
32+ if gotErr .Error () != wantErr {
33+ t .Errorf ("getExecutingSqlError() error = %v, want %v" , gotErr , wantErr )
34+ }
35+ })
4536}
4637
4738func TestGetSqlError (t * testing.T ) {
48- tests := []struct {
49- name string
50- err error
51- rawSql string
52- params []any
53- wantErr string
54- }{
55- {
56- name : "Basic Error Test" ,
57- err : ErrExpectedSizeWrong ,
58- rawSql : "UPDATE users SET name = @p1" ,
59- params : []any {"test" },
60- wantErr : "dbClient: effected rows was wrong\n sql:\n input sql=UPDATE users SET name = @p1\n params:\n @p1=test" ,
61- },
62- {
63- name : "Named Parameter Test" ,
64- err : ErrParseParamFailed ,
65- rawSql : "INSERT INTO users (name) VALUES (@name)" ,
66- params : []any {sql .Named ("name" , "test" )},
67- wantErr : "dbClient: failed to parse named params\n sql:\n input sql=INSERT INTO users (name) VALUES (@name)\n params:\n @name=test" ,
68- },
69- }
70-
71- for _ , tt := range tests {
72- t .Run (tt .name , func (t * testing.T ) {
73- gotErr := getSqlError (tt .err , tt .rawSql , tt .params )
74- if gotErr .Error () != tt .wantErr {
75- t .Errorf ("getSqlError() error = %v, want %v" , gotErr , tt .wantErr )
76- }
77- })
78- }
39+ t .Run ("Basic Error Test" , func (t * testing.T ) {
40+ err := ErrExpectedSizeWrong
41+ rawSql := "UPDATE users SET name = @p1"
42+ params := []any {"test" }
43+ wantErr := "dbClient: effected rows was wrong\n sql:\n input sql=UPDATE users SET name = @p1\n params:\n @p1=test"
44+
45+ gotErr := getSqlError (err , rawSql , params )
46+ if gotErr .Error () != wantErr {
47+ t .Errorf ("getSqlError() error = %v, want %v" , gotErr , wantErr )
48+ }
49+ })
50+
51+ t .Run ("Named Parameter Test" , func (t * testing.T ) {
52+ err := ErrParseParamFailed
53+ rawSql := "INSERT INTO users (name) VALUES (@name)"
54+ params := []any {sql .Named ("name" , "test" )}
55+ wantErr := "dbClient: failed to parse named params\n sql:\n input sql=INSERT INTO users (name) VALUES (@name)\n params:\n @name=test"
56+
57+ gotErr := getSqlError (err , rawSql , params )
58+ if gotErr .Error () != wantErr {
59+ t .Errorf ("getSqlError() error = %v, want %v" , gotErr , wantErr )
60+ }
61+ })
7962}
8063
8164func TestCutLongStringParams (t * testing.T ) {
@@ -85,48 +68,49 @@ func TestCutLongStringParams(t *testing.T) {
8568 // 为了便于测试,将最大长度设置为较小的值
8669 MaxLengthErrorValue = 10
8770
88- tests := []struct {
89- name string
90- paramVal any
91- want any
92- }{
93- {
94- name : "Short String" ,
95- paramVal : "test" ,
96- want : "test" ,
97- },
98- {
99- name : "Long String" ,
100- paramVal : "this is a very long string" ,
101- want : "this is a ...(length=24)" ,
102- },
103- {
104- name : "Non-String Type" ,
105- paramVal : 123 ,
106- want : 123 ,
107- },
108- {
109- name : "Stringer Interface" ,
110- paramVal : testStringer {"this is a very long string" },
111- want : "this is a ...(length=24)" ,
112- },
113- }
114-
115- for _ , tt := range tests {
116- t .Run (tt .name , func (t * testing.T ) {
117- got := cutLongStringParams (tt .paramVal )
118- if got != tt .want {
119- // 对于字符串类型的结果,检查是否包含预期的内容
120- if s , ok := got .(string ); ok {
121- if ! strings .Contains (s , "...(length=" ) {
122- t .Errorf ("cutLongStringParams() = %v, want %v" , got , tt .want )
123- }
124- } else {
125- t .Errorf ("cutLongStringParams() = %v, want %v" , got , tt .want )
126- }
71+ t .Run ("Short String" , func (t * testing.T ) {
72+ paramVal := "test"
73+ want := "test"
74+ got := cutLongStringParams (paramVal )
75+ if got != want {
76+ t .Errorf ("cutLongStringParams() = %v, want %v" , got , want )
77+ }
78+ })
79+
80+ t .Run ("Long String" , func (t * testing.T ) {
81+ paramVal := "this is a very long string"
82+ want := "this is a ...(length=24)"
83+ got := cutLongStringParams (paramVal )
84+ if s , ok := got .(string ); ok {
85+ if ! strings .Contains (s , "...(length=" ) {
86+ t .Errorf ("cutLongStringParams() = %v, want %v" , got , want )
87+ }
88+ } else {
89+ t .Errorf ("cutLongStringParams() = %v, want %v" , got , want )
90+ }
91+ })
92+
93+ t .Run ("Non-String Type" , func (t * testing.T ) {
94+ paramVal := 123
95+ want := 123
96+ got := cutLongStringParams (paramVal )
97+ if got != want {
98+ t .Errorf ("cutLongStringParams() = %v, want %v" , got , want )
99+ }
100+ })
101+
102+ t .Run ("Stringer Interface" , func (t * testing.T ) {
103+ paramVal := testStringer {"this is a very long string" }
104+ want := "this is a ...(length=24)"
105+ got := cutLongStringParams (paramVal )
106+ if s , ok := got .(string ); ok {
107+ if ! strings .Contains (s , "...(length=" ) {
108+ t .Errorf ("cutLongStringParams() = %v, want %v" , got , want )
127109 }
128- })
129- }
110+ } else {
111+ t .Errorf ("cutLongStringParams() = %v, want %v" , got , want )
112+ }
113+ })
130114}
131115
132116// 用于测试 Stringer 接口的辅助类型
0 commit comments