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 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 TestShouldReturnErroeSqlDriverResult(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") } }