mirror of
https://github.com/DATA-DOG/go-sqlmock.git
synced 2025-03-19 20:57:50 +02:00
Fixes expectations no arg exp but act args passed
This commit is contained in:
parent
fd316ea512
commit
37b1bab1c0
@ -30,6 +30,9 @@ func (e *ExpectedQuery) WillReturnRows(rows ...*Rows) *ExpectedQuery {
|
|||||||
|
|
||||||
func (e *queryBasedExpectation) argsMatches(args []driver.NamedValue) error {
|
func (e *queryBasedExpectation) argsMatches(args []driver.NamedValue) error {
|
||||||
if nil == e.args {
|
if nil == e.args {
|
||||||
|
if len(args) > 0 {
|
||||||
|
return fmt.Errorf("expected 0, but got %d arguments", len(args))
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if len(args) != len(e.args) {
|
if len(args) != len(e.args) {
|
||||||
|
@ -12,8 +12,8 @@ import (
|
|||||||
func TestQueryExpectationArgComparison(t *testing.T) {
|
func TestQueryExpectationArgComparison(t *testing.T) {
|
||||||
e := &queryBasedExpectation{converter: driver.DefaultParameterConverter}
|
e := &queryBasedExpectation{converter: driver.DefaultParameterConverter}
|
||||||
against := []driver.NamedValue{{Value: int64(5), Ordinal: 1}}
|
against := []driver.NamedValue{{Value: int64(5), Ordinal: 1}}
|
||||||
if err := e.argsMatches(against); err != nil {
|
if err := e.argsMatches(against); err == nil {
|
||||||
t.Errorf("arguments should match, since the no expectation was set, but got err: %s", err)
|
t.Errorf("arguments should not match, since no expectation was set, but argument was passed")
|
||||||
}
|
}
|
||||||
|
|
||||||
e.args = []driver.Value{5, "str"}
|
e.args = []driver.Value{5, "str"}
|
||||||
@ -104,8 +104,8 @@ func TestQueryExpectationArgComparisonBool(t *testing.T) {
|
|||||||
func TestQueryExpectationNamedArgComparison(t *testing.T) {
|
func TestQueryExpectationNamedArgComparison(t *testing.T) {
|
||||||
e := &queryBasedExpectation{converter: driver.DefaultParameterConverter}
|
e := &queryBasedExpectation{converter: driver.DefaultParameterConverter}
|
||||||
against := []driver.NamedValue{{Value: int64(5), Name: "id"}}
|
against := []driver.NamedValue{{Value: int64(5), Name: "id"}}
|
||||||
if err := e.argsMatches(against); err != nil {
|
if err := e.argsMatches(against); err == nil {
|
||||||
t.Errorf("arguments should match, since the no expectation was set, but got err: %s", err)
|
t.Errorf("arguments should not match, since no expectation was set, but argument was passed")
|
||||||
}
|
}
|
||||||
|
|
||||||
e.args = []driver.Value{
|
e.args = []driver.Value{
|
||||||
|
@ -435,9 +435,9 @@ func TestContextExecErrorDelay(t *testing.T) {
|
|||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
// test that return of error is delayed
|
// test that return of error is delayed
|
||||||
var delay time.Duration
|
var delay time.Duration = 100 * time.Millisecond
|
||||||
delay = 100 * time.Millisecond
|
|
||||||
mock.ExpectExec("^INSERT INTO articles").
|
mock.ExpectExec("^INSERT INTO articles").
|
||||||
|
WithArgs("hello").
|
||||||
WillReturnError(errors.New("slow fail")).
|
WillReturnError(errors.New("slow fail")).
|
||||||
WillDelayFor(delay)
|
WillDelayFor(delay)
|
||||||
|
|
||||||
|
@ -959,7 +959,7 @@ func TestPrepareExec(t *testing.T) {
|
|||||||
mock.ExpectBegin()
|
mock.ExpectBegin()
|
||||||
ep := mock.ExpectPrepare("INSERT INTO ORDERS\\(ID, STATUS\\) VALUES \\(\\?, \\?\\)")
|
ep := mock.ExpectPrepare("INSERT INTO ORDERS\\(ID, STATUS\\) VALUES \\(\\?, \\?\\)")
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
ep.ExpectExec().WillReturnResult(NewResult(1, 1))
|
ep.ExpectExec().WithArgs(i, "Hello"+strconv.Itoa(i)).WillReturnResult(NewResult(1, 1))
|
||||||
}
|
}
|
||||||
mock.ExpectCommit()
|
mock.ExpectCommit()
|
||||||
tx, _ := db.Begin()
|
tx, _ := db.Begin()
|
||||||
@ -1073,7 +1073,7 @@ func TestPreparedStatementCloseExpectation(t *testing.T) {
|
|||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
ep := mock.ExpectPrepare("INSERT INTO ORDERS").WillBeClosed()
|
ep := mock.ExpectPrepare("INSERT INTO ORDERS").WillBeClosed()
|
||||||
ep.ExpectExec().WillReturnResult(NewResult(1, 1))
|
ep.ExpectExec().WithArgs(1, "Hello").WillReturnResult(NewResult(1, 1))
|
||||||
|
|
||||||
stmt, err := db.Prepare("INSERT INTO ORDERS(ID, STATUS) VALUES (?, ?)")
|
stmt, err := db.Prepare("INSERT INTO ORDERS(ID, STATUS) VALUES (?, ?)")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -1102,9 +1102,9 @@ func TestExecExpectationErrorDelay(t *testing.T) {
|
|||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
// test that return of error is delayed
|
// test that return of error is delayed
|
||||||
var delay time.Duration
|
var delay time.Duration = 100 * time.Millisecond
|
||||||
delay = 100 * time.Millisecond
|
|
||||||
mock.ExpectExec("^INSERT INTO articles").
|
mock.ExpectExec("^INSERT INTO articles").
|
||||||
|
WithArgs("hello").
|
||||||
WillReturnError(errors.New("slow fail")).
|
WillReturnError(errors.New("slow fail")).
|
||||||
WillDelayFor(delay)
|
WillDelayFor(delay)
|
||||||
|
|
||||||
@ -1230,10 +1230,10 @@ func Test_sqlmock_Prepare_and_Exec(t *testing.T) {
|
|||||||
|
|
||||||
mock.ExpectPrepare("SELECT (.+) FROM users WHERE (.+)")
|
mock.ExpectPrepare("SELECT (.+) FROM users WHERE (.+)")
|
||||||
expected := NewResult(1, 1)
|
expected := NewResult(1, 1)
|
||||||
mock.ExpectExec("SELECT (.+) FROM users WHERE (.+)").
|
mock.ExpectExec("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").
|
||||||
WillReturnResult(expected)
|
WillReturnResult(expected)
|
||||||
expectedRows := mock.NewRows([]string{"id", "name", "email"}).AddRow(1, "test", "test@example.com")
|
expectedRows := mock.NewRows([]string{"id", "name", "email"}).AddRow(1, "test", "test@example.com")
|
||||||
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WillReturnRows(expectedRows)
|
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").WillReturnRows(expectedRows)
|
||||||
|
|
||||||
got, err := mock.(*sqlmock).Prepare(query)
|
got, err := mock.(*sqlmock).Prepare(query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -1326,7 +1326,7 @@ func Test_sqlmock_Query(t *testing.T) {
|
|||||||
}
|
}
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
expectedRows := mock.NewRows([]string{"id", "name", "email"}).AddRow(1, "test", "test@example.com")
|
expectedRows := mock.NewRows([]string{"id", "name", "email"}).AddRow(1, "test", "test@example.com")
|
||||||
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WillReturnRows(expectedRows)
|
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").WillReturnRows(expectedRows)
|
||||||
query := "SELECT name, email FROM users WHERE name = ?"
|
query := "SELECT name, email FROM users WHERE name = ?"
|
||||||
rows, err := mock.(*sqlmock).Query(query, []driver.Value{"test"})
|
rows, err := mock.(*sqlmock).Query(query, []driver.Value{"test"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user