feat: support breaker with sql statements (#3936)
This commit is contained in:
@@ -7,7 +7,10 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/zeromicro/go-zero/core/breaker"
|
||||
"github.com/zeromicro/go-zero/core/stores/dbtest"
|
||||
)
|
||||
|
||||
var errMockedPlaceholder = errors.New("placeholder")
|
||||
@@ -219,6 +222,28 @@ func TestNilGuard(t *testing.T) {
|
||||
assert.Equal(t, nilGuard{}, guard)
|
||||
}
|
||||
|
||||
func TestStmtScanFailed(t *testing.T) {
|
||||
dbtest.RunTest(t, func(db *sql.DB, mock sqlmock.Sqlmock) {
|
||||
mock.ExpectPrepare("any")
|
||||
|
||||
conn := NewSqlConnFromDB(db)
|
||||
stmt, err := conn.Prepare("any")
|
||||
assert.NoError(t, err)
|
||||
|
||||
var val struct {
|
||||
Foo int
|
||||
Bar string
|
||||
}
|
||||
for i := 0; i < 1000; i++ {
|
||||
row := sqlmock.NewRows([]string{"foo"}).AddRow("bar")
|
||||
mock.ExpectQuery("any").WillReturnRows(row)
|
||||
err := stmt.QueryRow(&val)
|
||||
assert.Error(t, err)
|
||||
assert.NotErrorIs(t, err, breaker.ErrServiceUnavailable)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
type mockedSessionConn struct {
|
||||
lastInsertId int64
|
||||
rowsAffected int64
|
||||
|
||||
Reference in New Issue
Block a user