0
測試中,我有一個簡單的去功能我想測試:「無效的內存地址」,而在圍棋
func root(c echo.Context) error {
return c.String(http.StatusOK, "This is the root!")
}
我的測試是這樣的:
import (
"net/http"
"testing"
"github.com/labstack/echo"
"github.com/stretchr/testify/assert"
)
type Context struct {
echo.Context
}
func TestRoot(t *testing.T) {
c := new(Context)
expectedResult := c.String(http.StatusOK, "This is the root!")
actualResult := c.String(http.StatusOK, "This is the root!")
assert.Equal(t, expectedResult, actualResult, "they should be equal")
}
現在,當我運行測試,我得到這個錯誤:
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
我是相當新的去,只是想試圖理解它。我知道,當我處理一個不存在的對象時,我得到這個錯誤。但是我所做的每個變量賦值都沒有變化,爲nil
。
Can somebody point me to a solution? Or tell me how simple unit tests should look like in Go?
你的'Context'類型具有嵌入式接口; 'echo.Context',它需要一個值。我不確定你在這裏準備做什麼,因爲你沒有處理任何請求或響應。 – JimB
在調用該接口上的方法之前,'TestRoot'函數必須將c.Context設置爲非零接口值。也許Echo包提供了一種創建測試環境的方法。 –
這是我的問題。在我習慣的單元測試中,我只測試根函數是否以合適的值返回正確的對象。我怎麼能這樣做在Go(或者我不應該這樣做呢?) –