assert 包是对 testing 的一个简单扩展,提供的一系列的断言函数,方便在测试函数中使用。
func TestA(t *testing.T) {
v := true
a := assert.New(t, false)
a.True(v)
}
// 也可以对 testing.B 使用
func Benchmark1(b *testing.B) {
a := assert.New(b, false)
v := false
a.True(v)
for b.Loop() {
// do something
}
}assert/rest 也提供了针对 HTTP 请求的测试功能
func TestHTTP( t *testing.T) {
a := assert.New(t, false)
srv := rest.NewServer(a, h, nil)
a.NotNil(srv)
defer srv.Close()
srv.NewRequest(http.MethodGet, "/body").
Header("content-type", "application/json").
Query("page", "5").
EncodingBody(&bodyTest{ID: 5}, json.Marshal).
Do().
Status(http.StatusCreated).
Header("content-type", "application/json;charset=utf-8").
EncodingBody(&bodyTest{ID: 6}, json.Unmarshal)
}
// 也可以直接使用原始数据进行测试
func TestRaw(t *testing.T) {
req :=`POST /users HTTP/1.1
Host: example.com
Content-type: application/json
{"username": "admin", "password":"123"}
`
// 期望的返回数据
resp :=`HTTP/1.1 201
Location: https://example.com/users/1
`
a := assert.New(t, false)
rest.RawHTTP(a, nil,req, resp)
}