Hello, I have been looking for tutorials on Golang TDD Rest API but I have not been finding any. Am not interested in using a framework.
Am interested in a TDD CRUD REST API. The test I have written returns controllers/admin.go:18: undefined: a in a.DB This is what I have so far. controller/admin.go func CreateAdmin(w http.ResponseWriter, r *http.Request) { var admin models.Admin decoder := json.NewDecoder(r.Body) if err := decoder.Decode(&admin); err != nil { helpers.RespondWithError(w, http.StatusBadRequest, "Invalid request payload") return } defer r.Body.Close() if err := admin.CreateAdmin(a.DB); err != nil { helpers.RespondWithError(w, http.StatusInternalServerError, err.Error()) return } helpers.RespondWithJSON(w, http.StatusCreated, admin) } model/admin.go type Admin struct { ID int `json:"id"` Name string `json:"name"` Company string `json:"company"` Username string `json:"username"` Password string `json:"password"` } func (p *Admin) CreateAdmin(db *sql.DB) error { err := db.QueryRow("INSERT INTO admins(name, company, username, password) VALUES($1, $2, $3, $4) RETURNING id", p.Name, p.Company, p.Username, p.Password).Scan(&p.ID) if err != nil { return err } return nil } main.go func main() { router := mux.NewRouter() // admin routes router.HandleFunc("/admin", controllers.CreateAdmin).Methods("GET") log.Fatal(http.ListenAndServe(":9000", router)) } tests/admin_test.go func TestCreateAdmin(t *testing.T) { payload := []byte(`{"name":"new admin", "company":"localhost", "username":"ad...@localhost.com", "password":"admin"}`) request, err := http.NewRequest("POST", "/admin", bytes.NewBuffer(payload)) if err != nil { t.Fatal(err) } recorder := httptest.NewRecorder() handler := http.HandlerFunc(controllers.CreateAdmin) handler.ServeHTTP(recorder, request) if recorder.Code != http.StatusOK { t.Errorf("bad response code, wanted %v got %v", recorder.Code, http.StatusOK) } } -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.