Zunächst versuche ich Golang zu lernen. Ich versuche, meine Handler in Golang mithilfe des Testify-Pakets einem Unit-Test zu unterziehen. Wenn ich meinen Test durchführe, erhalte ich diese Fehlermeldung -> Ich bin überrascht, dass die Methode einen Nullwert zurückgibt. Soweit ich weiß, hat Golangte Null statt Null. was ist der Grund?
my handler test file
package entities
import (
"github.com/google/uuid"
"github.com/labstack/echo/v4"
"github.com/stretchr/testify/assert"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
type mock struct {
create func(user User) error
getById func(id uuid.UUID) *User
}
var userJson = `{"id":"e918b0bc-76f3-4380-a1fb-a14ca5a08fc3","name":"Jon Snow","email":"[email protected]"}`
func (m *mock) Create(user User) error { return m.create(user) }
func (m *mock) GetById(id uuid.UUID) *User { return m.getById(id) }
func TestCreate(t *testing.T) {
t.Parallel()
//Arrange
e := echo.New()
expectedStatusCode := http.StatusCreated
m := &mock{create: func(user User) error { return nil }}
req := httptest.NewRequest(http.MethodPost, "/", strings.NewReader(userJson))
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
server := NewUserHandler(m)
//Act
server.Create(c)
//Assert
assert.Equal(t, expectedStatusCode, rec.Code)
assert.Nil(t, rec.Body.String())
}
my handler
func (u *userHandler) Create(e echo.Context) error {
var user User
err := json.NewDecoder(e.Request().Body).Decode(&user)
if err != nil {
e.JSON(http.StatusUnprocessableEntity, err)
}
u.userService.Create(user)
if err != nil {
e.JSON(http.StatusBadRequest, err)
}
return e.JSON(http.StatusCreated, nil)
}
my user service
func (u *userService) Create(user User) (err error) {
err = u.userRepo.Create(user)
return
}
In deinem Test wirst du das tun
assert.Nil(t, rec.Body.String())
und
ist JSON-codiert Null (d. h. „null“)
rec.Body
Tatsächlich kann dieser Test wegen
Das obige ist der detaillierte Inhalt vonFehler beim Golang-Einheitentest erwartet Null, aber erhalten: „null\n'. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!