test(context): improve context.Set and context.Get tests

- Split existing test into separate functions for different scenarios
- Add test for setting and getting values with any key type
- Add test for handling non-comparable keys
- Improve assertions to check for key existence and value correctness

Signed-off-by: flc1125 <four_leaf_clover@foxmail.com>
This commit is contained in:
flc1125 2025-05-21 19:26:38 +08:00
parent f1bcc093b8
commit ac59ed24d3

View File

@ -255,8 +255,13 @@ func TestContextSetGet(t *testing.T) {
assert.Equal(t, "bar", c.MustGet("foo")) assert.Equal(t, "bar", c.MustGet("foo"))
assert.Panics(t, func() { c.MustGet("no_exist") }) assert.Panics(t, func() { c.MustGet("no_exist") })
// other types }
func TestContextSetGetAnyKey(t *testing.T) {
c, _ := CreateTestContext(httptest.NewRecorder())
type key struct{} type key struct{}
tests := []struct { tests := []struct {
key any key any
}{ }{
@ -272,11 +277,16 @@ func TestContextSetGet(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(reflect.TypeOf(tt.key).String(), func(t *testing.T) { t.Run(reflect.TypeOf(tt.key).String(), func(t *testing.T) {
c.Set(tt.key, 1) c.Set(tt.key, 1)
assert.Equal(t, 1, c.MustGet(tt.key)) value, ok := c.Get(tt.key)
assert.True(t, ok)
assert.Equal(t, 1, value)
}) })
} }
}
func TestContextSetGetPanicsWhenKeyNotComparable(t *testing.T) {
c, _ := CreateTestContext(httptest.NewRecorder())
// no comparable
assert.Panics(t, func() { assert.Panics(t, func() {
c.Set([]int{1}, 1) c.Set([]int{1}, 1)
c.Set(func() {}, 1) c.Set(func() {}, 1)