httptest.NewRequest设置上下文存根

时间:2018-08-07 10:15:47

标签: unit-testing http go stub

我正在创建一个请求存根,以便将其传递给经过测试的功能:

request := httptest.NewRequest("GET", "http://example.com/foo", nil)

问题:我还可以通过向该请求添加Context值来为该请求存根request-uuid对象吗?

1 个答案:

答案 0 :(得分:1)

您拥有request,在将其传递之前,可以使用它进行任何操作。

使用Request.Context()访问其上下文,使用context.WithValue()派生一个包含您的键值的新context.Context,并使用Request.WithContext()获取一个新的{{ 3}}的新上下文:

request := httptest.NewRequest("GET", "http://example.com/foo", nil)
ctx := request.Context()
ctx = context.WithValue(ctx, "request-uuid", "myvalue")
request = request.WithContext(ctx)

// now request's context contains the "request-uuid" key