package dal import ( "database/sql/driver" "testing" "time" "github.com/DATA-DOG/go-sqlmock" ) type AnyTime struct{} func (t AnyTime) Match(v driver.Value) bool { _, ok := v.(time.Time) return ok } // type AnyDecimal struct{} func TestTransactions(t *testing.T) { db, mock, err := sqlmock.New() if err != nil { t.Fatalf("failed to create a mock DB: %s", err) } defer db.Close() conn := Connection{db} rows := sqlmock.NewRows([]string{"date", "description", "amount"}). AddRow(time.Now(), "income", 1000). AddRow(time.Now(), "expense", -500) mock.ExpectQuery("SELECT t.date, t.description, t.amount").WithoutArgs().WillReturnRows(rows) transactions := conn.Transactions() if len(transactions) <= 0 { t.Error("No transactions returned") } if err := mock.ExpectationsWereMet(); err != nil { t.Errorf("unfulfilled expectations: %s", err) } }