package mergo_test import ( "encoding/json" "testing" "github.com/imdario/mergo" ) const issue138configuration string = ` { "Port": 80 } ` func TestIssue138(t *testing.T) { type config struct { Port uint16 } type compatibleConfig struct { Port float64 } foo := make(map[string]interface{}) // encoding/json unmarshals numbers as float64 // https://golang.org/pkg/encoding/json/#Unmarshal json.Unmarshal([]byte(issue138configuration), &foo) err := mergo.Map(&config{}, foo) if err == nil { t.Error("expected type mismatch error, got nil") } else { if err.Error() != "type mismatch on Port field: found float64, expected uint16" { t.Errorf("expected type mismatch error, got %q", err) } } c := compatibleConfig{} if err := mergo.Map(&c, foo); err != nil { t.Error(err) } }