I'm making a simple test, and test using Go: Toggle Test Coverage In Current Package
in Visual Studio Code
like this
In my code is using os.Getenv
to read a variable from my own env.
It get FAIL
when using os.Getenv
, but SUCCESS
when hardcoded
How to get SUCCESS
even get data from env
using Go: Toggle Test Coverage In Current Package
?
Here is my code:
type MyStruct struct {
Name string `json:"name"`
}
func MyFunc() ([]MyStruct, error) {
str := os.Getenv("MyStruct") // Fail
// str := `[{"name": "one"}, {"name": "two"}]` // Success
var myData []MyStruct
err := json.Unmarshal([]byte(str), &myData)
if err != nil {
return nil, err
}
return myData, nil
}
My test code:
func TestMyFunc(t *testing.T) {
tests := []struct {
name string
want []MyStruct
wantErr error
}{
{
name: "success",
want: []MyStruct{
{
Name: "one",
},
{
Name: "two",
},
},
wantErr: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := MyFunc()
assert.Equal(t, err, tt.wantErr)
assert.Equal(t, got, tt.want)
})
}
}
My env:
export MyStruct='[{"name": "one"}, {"name": "two"}]'
Using