Using waitgroup to wait asynchronous test case

This commit is contained in:
Samuel Abreu 2019-04-13 10:43:34 -03:00
parent 8709d894ef
commit bfbe6a708f

View File

@ -16,6 +16,7 @@ import (
"os"
"reflect"
"strings"
"sync"
"testing"
"time"
@ -1818,15 +1819,19 @@ func TestRaceParamsContextCopy(t *testing.T) {
DefaultWriter = os.Stdout
router := Default()
nameGroup := router.Group("/:name")
var wg sync.WaitGroup
wg.Add(2)
{
nameGroup.GET("/api", func(c *Context) {
go func(c *Context, param string) {
time.Sleep(100 * time.Millisecond)
defer wg.Done()
// First assert must be executed after the second request
time.Sleep(50 * time.Millisecond)
assert.Equal(t, c.Param("name"), param)
}(c.Copy(), c.Param("name"))
})
}
performRequest(router, "GET", "/name1/api")
performRequest(router, "GET", "/name2/api")
time.Sleep(200 * time.Millisecond)
wg.Wait()
}