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?
' typeには埋め込みインターフェイスがあります。 'echo.Context'は値を必要とします。あなたがリクエストやレスポンスを扱っていないので、あなたがここで正確にやろうとしていることがわかりません。 – JimB
'TestRoot'関数は、そのインタフェース上のメソッドを呼び出す前にc.Contextを非nilインタフェースの値に設定する必要があります。おそらく、Echoパッケージは、テストのためのそのようなコンテキストを作成する方法を提供します。 –
それは私の質問です。私がしていたユニットテストでは、ルート関数が適切な値で正しいオブジェクトを返すかどうかをテストします。 –