Categorygithub.com/issue9/assert
modulepackage
1.5.0
Repository: https://github.com/issue9/assert.git
Documentation: pkg.go.dev

# README

assert

Go codecov license PkgGoDev

assert 包是对 testing 的一个简单扩展,提供的一系列的断言函数, 方便在测试函数中使用:

func TestA(t *testing.T) {
    v := true
    assert.True(v)

    a := assert.New(t)
    a.True(v)
}

// 也可以对 testing.B 使用
func Benchmark1(b *testing.B) {
    a := assert.New(b)
    v := false
    a.True(v)
    for(i:=0; i<b.N; i++) {
        // do something
    }
}

// 对 API 请求做测试,可以引用 assert/rest
func TestHTTP( t *testing.T) {
    a := assert.New(t)

    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").
        JSONBody(&bodyTest{ID: 5}).
        Do().
        Status(http.StatusCreated).
        Header("content-type", "application/json;charset=utf-8").
        JSONBody(&bodyTest{ID: 6})
}

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

# Packages

Package rest 简单的 API 测试库.

# Functions

Contains 断言 container 包含 item 的或是包含 item 中的所有项 具体函数说明可参考 IsContains().
Empty 断言 expr 的值为空(nil,"",0,false),否则输出错误信息.
Equal 断言 v1 与 v2 两个值相等.
Error 断言有错误发生 传递未初始化的 error 值(var err error = nil),将断言失败.
ErrorIs 断言 expr 为 target 类型 相当于 True(t, errors.Is(expr, target)).
ErrorString 断言有错误发生且错误信息中包含指定的字符串 str 传递未初始化的 error 值(var err error = nil),将断言失败.
ErrorType 断言有错误发生且错误的类型与 typ 的类型相同 传递未初始化的 error 值(var err error = nil),将断言失败。 仅对 expr 是否与 typ 为同一类型作简单判断,如果要检测是否是包含关系,可以使用 errors.Is 检测。 ErrorType 与 ErrorIs 有本质的区别:ErrorIs 检测是否是包含关系,而 ErrorType 检测是否类型相同。比如: err := os.WriteFile(...) 返回的 err 是一个 os.PathError 类型,用 ErrorType(err, &os.PathError{}) 断方正常; 而 ErrorIs(err, &os.PathError{}) 则会断言失败。.
False 断言表达式 expr 为 false.
FileExists 断言文件存在.
FileNotExists 断言文件不存在.
HasPanic 判断 fn 函数是否会发生 panic 若发生了 panic,将把 msg 一起返回。.
IsContains 判断 container 是否包含了 item 的内容。若是指针,会判断指针指向的内容, 但是不支持多重指针。 若 container 是字符串(string、[]byte 和 []rune,不包含 fmt.Stringer 接口), 都将会以字符串的形式判断其是否包含 item。 若 container 是个列表(array、slice、map)则判断其元素中是否包含 item 中的 的所有项,或是 item 本身就是 container 中的一个元素。.
IsEmpty 判断一个值是否为空(0, "", false, 空数组等)。 []string{""}空数组里套一个空字符串,不会被判断为空。.
IsEqual 判断两个值是否相等。 除了通过 reflect.DeepEqual() 判断值是否相等之外,一些类似 可转换的数值也能正确判断,比如以下值也将会被判断为相等: int8(5) == int(5) []int{1,2} == []int8{1,2} []int{1,2} == [2]int8{1,2} []int{1,2} == []float32{1,2} map[string]int{"1":"2":2} == map[string]int8{"1":1,"2":2} // map 的键值不同,即使可相互转换也判断不相等。 map[int]int{1:1,2:2} != map[int8]int{1:1,2:2}.
IsNil 判断一个值是否为 nil。 当特定类型的变量,已经声明,但还未赋值时,也将返回 true.
No description provided by the author
New 返回 Assertion 对象。.
Nil 断言表达式 expr 为 nil.
NotContains 断言 container 不包含 item 的或是不包含 item 中的所有项.
NotEmpty 断言 expr 的值为非空(除 nil,"",0,false之外),否则输出错误信息.
NotEqual 断言 v1 与 v2 两个值不相等.
NotError 断言没有错误发生.
No description provided by the author
NotNil 断言表达式 expr 为非 nil 值.
NotPanic 断言函数不会发生 panic.
NotZero 断言是否为非零值 最终调用的是 reflect.Value.IsZero 进行判断.
Panic 断言函数会发生 panic.
PanicString 断言函数会发生 panic 且 panic 信息中包含指定的字符串内容.
PanicType 断言函数会发生 panic 且抛出指定的类型.
True 断言表达式 expr 为 true args 对应 fmt.Printf() 函数中的参数,其中 args[0] 对应第一个参数 format,依次类推, 具体可参数 formatMessage() 函数的介绍。其它断言函数的 args 参数,功能与此相同。.
Zero 断言是否为零值 最终调用的是 reflect.Value.IsZero 进行判断.

# Structs

Assertion 是对 testing.TB 进行了简单的封装。 可以以对象的方式调用包中的各个断言函数。.