我正試圖掌握Go中的測試,我遇到了一些絆腳石。我有以下代碼:package mainimport ( "fmt" "testing")type ConformanceChange struct { Val string Proxy struct { Address string Port string }}func Item(conformance ConformanceChange) string { service := conformance.Proxy.Address services := map[string]string{ "Word": "Now", } service = services[service] fmt.Println("Service: ", service) return service}func Test_Item(t *testing.T) { type args struct { conformance ConformanceChange } tests := []struct { name string args args want string }{ // TODO: Add test cases. {name: "empty", args: args{ conformance: ConformanceChange{}, }, want: ""}, {name: "value", args: args{ conformance: ConformanceChange{Val: "test", Proxy: {Address: "d", Port: "d"}}, }, want: ""}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := Item(tt.args.conformance); got != tt.want { t.Errorf("getService() = %v, want %v", got, tt.want) } }) }}我希望能夠在運(yùn)行測試時將數(shù)據(jù)傳遞給 。我可以將數(shù)據(jù)傳遞給它,它的工作原理。ConformanceChange.Proxy.AddressConformanceChange.Val有人可以讓我知道正確的語法嗎?更新祝福提供的解決方案奏效了。從這里開始,如果我有以下代碼:package mainimport ( "fmt" "testing")type ConformanceChange struct { Val string Proxy struct { Address string `json:address` Port string `json:port` }}func Item(conformance ConformanceChange) string { service := conformance.Proxy.Address services := map[string]string{ "Word": "Now", } service = services[service] fmt.Println("Service: ", service) return service}我不想指定測試中的所有字段(因為它可能會變得混亂),我可以只指定一個字段嗎?在上面的代碼中,它失敗了:json:端口Cannot use 'struct { Port string }(struct { Port string }{Port: "d"})' (type struct {...}) as the type struct {...}
1 回答

ITMISS
TA貢獻(xiàn)1871條經(jīng)驗 獲得超8個贊
創(chuàng)建結(jié)構(gòu)值時,應(yīng)指定結(jié)構(gòu)。
{name: "value", args: args{
conformance: ConformanceChange{Val: "test", Proxy: struct{Address string; Port string}{Address: "d", Port: "d"}},
}, want: ""},
為了避免重復(fù),您可以定義一個結(jié)構(gòu)Proxy
type Proxy struct {
Address string
Port string
}
type ConformanceChange struct {
Val string
Proxy Proxy
}
然后在初始化結(jié)構(gòu)值時引用它
{name: "value", args: args{
conformance: ConformanceChange{Val: "test", Proxy: Proxy{Address: "d", Port: "d"}},
}, want: ""},
- 1 回答
- 0 關(guān)注
- 90 瀏覽
添加回答
舉報
0/150
提交
取消