You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.9 KiB
83 lines
1.9 KiB
package music_test
|
|
|
|
import (
|
|
"yunyan/sys/music"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// Test_SearchMusic 调用外部音乐搜索接口做最小联通性验证。
|
|
// 参数:
|
|
// - t: Go 测试对象
|
|
//
|
|
// 返回值:
|
|
// - 无
|
|
//
|
|
// 异常:
|
|
// - 当未启用集成测试时跳过
|
|
// - 当外部接口不可用或返回异常时,测试失败
|
|
func Test_SearchMusic(t *testing.T) {
|
|
if os.Getenv("MUSIC_INTEGRATION_TEST") == "" {
|
|
t.Skip("跳过测试:未设置环境变量 MUSIC_INTEGRATION_TEST")
|
|
}
|
|
keywords := url.QueryEscape("泡沫")
|
|
url := fmt.Sprintf("http://api.ideapsound.com:3000/cloudsearch?keywords=%s&limit=1&offset=0", keywords)
|
|
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
t.Fatalf("构造请求失败: %v", err)
|
|
}
|
|
// 执行请求
|
|
client := &http.Client{Timeout: 10 * time.Second}
|
|
resp, err := client.Do(req)
|
|
if err != nil {
|
|
t.Fatalf("请求失败: %v", err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
// 读取响应内容
|
|
body, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
t.Fatalf("读取响应失败: %v", err)
|
|
}
|
|
|
|
// 输出响应内容
|
|
fmt.Println(string(body))
|
|
}
|
|
|
|
// Test_Sys_SearchMusic 使用系统封装进行音乐 URL 获取的最小集成测试。
|
|
// 参数:
|
|
// - t: Go 测试对象
|
|
//
|
|
// 返回值:
|
|
// - 无
|
|
//
|
|
// 异常:
|
|
// - 当未启用集成测试时跳过
|
|
// - 当请求失败时,测试失败
|
|
func Test_Sys_SearchMusic(t *testing.T) {
|
|
if os.Getenv("MUSIC_INTEGRATION_TEST") == "" {
|
|
t.Skip("跳过测试:未设置环境变量 MUSIC_INTEGRATION_TEST")
|
|
}
|
|
if sys, err := music.NewSys(
|
|
music.SetApiBaseUrl("https://music.voitrans.net"),
|
|
); err != nil {
|
|
t.Fatalf("Sys Init err:%v", err)
|
|
} else {
|
|
var (
|
|
searchResultResponse *music.UrlResult
|
|
)
|
|
if searchResultResponse, err = sys.MusicUrl(441491828); err == nil {
|
|
|
|
}
|
|
if err != nil {
|
|
t.Fatalf("播放音乐失败: %v", err)
|
|
}
|
|
t.Logf("播放音乐成功 searchResultResponse:%+v", searchResultResponse)
|
|
}
|
|
}
|
|
|