更新我想制作帮助器函数来测试阅读env vars函数。它使用envconfig。func Test_T2(t *testing.T) { os.Setenv("APP_PARAM_STR", "string value") os.Setenv("APP_PARAM_INT", "12") os.Setenv("APP_PARAM_DURATION", "15s") os.Setenv("APP_PARAM_INT", "44") c := ConfigTwo{} d := ConfigTwo{ ParamDuration: 15*time.Second, ParamInt: 44, } helper(t, &c, &d)}func helper(t *testing.T, confObject, expValue interface{}) { t.Helper() err := getParams(&confObject) if !assert.NoError(t, err) { return } assert.Equal(t, expValue, confObject)}func getParams(cfg interface{}) error { return envconfig.Process("APP", cfg)}** UPDATE 2 **It works. Thanks everyone.如果我只有getPrams函数,它有效。但是如果我添加帮助程序(我需要测试不同的结构),我会收到一个错误:specification must be a struct pointerenvconfig 在这里执行两个检查:
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
使用此代码。该参数是指向预期值的指针。
func helper(t *testing.T, pexpected interface{}) {
t.Helper()
pactual := reflect.New(reflect.TypeOf(pexpected).Elem()).Interface()
err := getParams(pactual)
if !assert.NoError(t, err) {
return
}
assert.Equal(t, pexpected, pactual)
}
该表达式返回一个指向新空值的指针,该值的类型与 pexpected 所指向的值相同。reflect.New(reflect.TypeOf(pexeceted).Elem()).Interface()
这样称呼它:
helper(t, &ConfigTwo{A: "expected A Field", B: "expected B field"}
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消