mirror of
https://github.com/DATA-DOG/go-sqlmock.git
synced 2024-11-21 17:17:08 +02:00
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package sqlmock
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
// used for examples
|
|
var mock = &sqlmock{}
|
|
|
|
func ExampleNewErrorResult() {
|
|
db, mock, _ := New()
|
|
result := NewErrorResult(fmt.Errorf("some error"))
|
|
mock.ExpectExec("^INSERT (.+)").WillReturnResult(result)
|
|
res, _ := db.Exec("INSERT something")
|
|
_, err := res.LastInsertId()
|
|
fmt.Println(err)
|
|
// Output: some error
|
|
}
|
|
|
|
func ExampleNewResult() {
|
|
var lastInsertID, affected int64
|
|
result := NewResult(lastInsertID, affected)
|
|
mock.ExpectExec("^INSERT (.+)").WillReturnResult(result)
|
|
fmt.Println(mock.ExpectationsWereMet())
|
|
// Output: there is a remaining expectation which was not matched: ExpectedExec => expecting Exec or ExecContext which:
|
|
// - matches sql: '^INSERT (.+)'
|
|
// - is without arguments
|
|
// - should return Result having:
|
|
// LastInsertId: 0
|
|
// RowsAffected: 0
|
|
}
|
|
|
|
func TestShouldReturnValidSqlDriverResult(t *testing.T) {
|
|
result := NewResult(1, 2)
|
|
id, err := result.LastInsertId()
|
|
if 1 != id {
|
|
t.Errorf("expected last insert id to be 1, but got: %d", id)
|
|
}
|
|
if err != nil {
|
|
t.Errorf("expected no error, but got: %s", err)
|
|
}
|
|
affected, err := result.RowsAffected()
|
|
if 2 != affected {
|
|
t.Errorf("expected affected rows to be 2, but got: %d", affected)
|
|
}
|
|
if err != nil {
|
|
t.Errorf("expected no error, but got: %s", err)
|
|
}
|
|
}
|
|
|
|
func TestShouldReturnErrorSqlDriverResult(t *testing.T) {
|
|
result := NewErrorResult(fmt.Errorf("some error"))
|
|
_, err := result.LastInsertId()
|
|
if err == nil {
|
|
t.Error("expected error, but got none")
|
|
}
|
|
_, err = result.RowsAffected()
|
|
if err == nil {
|
|
t.Error("expected error, but got none")
|
|
}
|
|
}
|