我有一个简单的Go功能,我想测试一下:
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
我是Go的新手,只是想尝试理解它。我知道当我处理一个不存在的对象时,我收到了这个错误。但我正在做的每个变量赋值都没有变化为nil
。
有人能指出我的解决方案吗?或者告诉我Go中的单元测试应该是多么简单?
答案 0 :(得分:-1)
package main
import (
"testing"
"github.com/labstack/echo"
)
// Context context struct
type Context struct {
echo.Context
}
// TestRoot func test root
func TestRoot(t *testing.T) {
c := &Context{}
if c == nil {
t.Errorf("ERROR: type Context could not be null, received %v", c)
}
}
你的恐慌错误消失了,告诉我我是不是错了。
我也不太了解你正在尝试做什么。但我只是试图修复你的恐慌错误,并告诉你如何进行测试,你只需要使用你的函数并在某些条件下测试结果,然后只使用测试包来做测试错误