package sms import ( "encoding/json" "fmt" "net/http" "net/http/httptest" "testing" ) // ---------------- 模拟服务 ---------------- // mockServer 返回一个 httptest.Server,用于模拟API响应 func mockServer(t *testing.T, path string, response interface{}) *httptest.Server { return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path != path { t.Errorf("unexpected path: got %s, want %s", r.URL.Path, path) } _ = json.NewEncoder(w).Encode(response) })) } // ---------------- 测试发送短信 ---------------- func TestSendSMS(t *testing.T) { client := NewClient() content := "【明慧科技】提醒:您的go2ns租卡会员时长仅剩余一个月,现在续费最高立减200元!赶快进入小程序领取优惠吧!" returnUrl := "https://telecom.2016js.com/api/v1/sohan/notice" body := BusinessBody{ Content: &content, SendList: []SendList{ { OutOrderID: "ORDER777", PhoneNumber: "15019230751"}, }, ReturnURL: &returnUrl, } resp, err := client.SendSMS(body) if err != nil { t.Fatalf("SendSMS error: %v", err) } fmt.Printf("response: %+v", resp) if resp.StatusCode != 1 { t.Errorf("unexpected response: %+v", resp) } } // ---------------- 测试查询余额 ---------------- func TestGetBalance(t *testing.T) { client := NewClient() resp, err := client.GetBalance() if err != nil { t.Fatalf("GetBalance error: %v", err) } fmt.Printf("response: %+v", resp) if resp.StatusCode != 1 { t.Errorf("unexpected response: %+v", resp) } } // ---------------- 测试查询状态 ---------------- func TestQueryState(t *testing.T) { client := NewClient() resp, err := client.QueryState("ORDER123", "15019230751") if err != nil { t.Fatalf("QueryState error: %v", err) } fmt.Printf("response: %+v", resp) if resp.StatusCode != 1 { t.Errorf("unexpected sendStatus: %s", resp.Data.SendStatus) } }