package sqlx /* import ( "reflect" "testing" sqlmock "github.com/DATA-DOG/go-sqlmock" ) type food struct { ID string Name string Presenter bool `db:"-"` } func TestTableBind(t *testing.T) { Register("foods", food{}) db, mock, err := sqlmock.New() if err != nil { t.Fatal(err) } mock.ExpectQuery("SELECT .* FROM foods WHERE id = ?"). WithArgs("42"). WillReturnRows(sqlmock.NewRows([]string{"id", "name"}). AddRow("42", "banana"). AddRow("43", "broccoli")) rows, err := db.Query("SELECT .* FROM foods WHERE id = ? LIMIT 1", "42") if err != nil { t.Fatal(err) } var f food err = Bind(&f, rows) if err != nil { t.Fatal(err) } expectedSingle := food{"42", "banana", false} if !reflect.DeepEqual(f, expectedSingle) { t.Fatalf("expected value: %#+v but got: %#+v", expectedSingle, f) } mock.ExpectQuery("SELECT .* FROM foods"). WillReturnRows(sqlmock.NewRows([]string{"id", "name"}). AddRow("42", "banana"). AddRow("43", "broccoli"). AddRow("44", "chicken")) rows, err = db.Query("SELECT .* FROM foods") if err != nil { t.Fatal(err) } var foods []food err = Bind(&foods, rows) if err != nil { t.Fatal(err) } expectedMany := []food{ {"42", "banana", false}, {"43", "broccoli", false}, {"44", "chicken", false}, } for i := range foods { if !reflect.DeepEqual(foods[i], expectedMany[i]) { t.Fatalf("[%d] expected: %#+v but got: %#+v", i, expectedMany[i], foods[i]) } } } */