File tree 4 files changed +53
-4
lines changed
4 files changed +53
-4
lines changed Original file line number Diff line number Diff line change @@ -2,8 +2,10 @@ language: go
2
2
go :
3
3
- 1.1
4
4
- 1.2
5
+ - 1.3
5
6
- release
6
7
- tip
7
8
8
9
script :
10
+ - go vet ./...
9
11
- go test -v ./...
Original file line number Diff line number Diff line change @@ -320,6 +320,8 @@ Visit [godoc](http://godoc.org/github.com/DATA-DOG/go-sqlmock)
320
320
321
321
## Changes
322
322
323
+ - ** 2014-08-14** added ** sqlmock.NewErrorResult** which gives an option to return driver.Result with errors for
324
+ interface methods, see [ issue] ( https://github.com/DATA-DOG/go-sqlmock/issues/5 )
323
325
- ** 2014-05-29** allow to match arguments in more sophisticated ways, by providing an ** sqlmock.Argument** interface
324
326
- ** 2014-04-21** introduce ** sqlmock.New()** to open a mock database connection for tests. This method
325
327
calls sql.DB.Ping to ensure that connection is open, see [ issue] ( https://github.com/DATA-DOG/go-sqlmock/issues/4 ) .
Original file line number Diff line number Diff line change @@ -10,21 +10,30 @@ import (
10
10
type result struct {
11
11
insertID int64
12
12
rowsAffected int64
13
+ err error
13
14
}
14
15
15
16
// NewResult creates a new sql driver Result
16
17
// for Exec based query mocks.
17
18
func NewResult (lastInsertID int64 , rowsAffected int64 ) driver.Result {
18
19
return & result {
19
- lastInsertID ,
20
- rowsAffected ,
20
+ insertID : lastInsertID ,
21
+ rowsAffected : rowsAffected ,
22
+ }
23
+ }
24
+
25
+ // NewErrorResult creates a new sql driver Result
26
+ // which returns an error given for both interface methods
27
+ func NewErrorResult (err error ) driver.Result {
28
+ return & result {
29
+ err : err ,
21
30
}
22
31
}
23
32
24
33
func (r * result ) LastInsertId () (int64 , error ) {
25
- return r .insertID , nil
34
+ return r .insertID , r . err
26
35
}
27
36
28
37
func (r * result ) RowsAffected () (int64 , error ) {
29
- return r .rowsAffected , nil
38
+ return r .rowsAffected , r . err
30
39
}
Original file line number Diff line number Diff line change
1
+ package sqlmock
2
+
3
+ import (
4
+ "fmt"
5
+ "testing"
6
+ )
7
+
8
+ func TestShouldReturnValidSqlDriverResult (t * testing.T ) {
9
+ result := NewResult (1 , 2 )
10
+ id , err := result .LastInsertId ()
11
+ if 1 != id {
12
+ t .Errorf ("Expected last insert id to be 1, but got: %d" , id )
13
+ }
14
+ if err != nil {
15
+ t .Errorf ("expected no error, but got: %s" , err )
16
+ }
17
+ affected , err := result .RowsAffected ()
18
+ if 2 != affected {
19
+ t .Errorf ("Expected affected rows to be 2, but got: %d" , affected )
20
+ }
21
+ if err != nil {
22
+ t .Errorf ("expected no error, but got: %s" , err )
23
+ }
24
+ }
25
+
26
+ func TestShouldReturnErroeSqlDriverResult (t * testing.T ) {
27
+ result := NewErrorResult (fmt .Errorf ("some error" ))
28
+ _ , err := result .LastInsertId ()
29
+ if err == nil {
30
+ t .Error ("expected error, but got none" )
31
+ }
32
+ _ , err = result .RowsAffected ()
33
+ if err == nil {
34
+ t .Error ("expected error, but got none" )
35
+ }
36
+ }
You can’t perform that action at this time.
0 commit comments