84 lines
1.6 KiB
Go
84 lines
1.6 KiB
Go
package repository
|
|
|
|
import (
|
|
"blockchain/internal/config"
|
|
"context"
|
|
"fmt"
|
|
"sync"
|
|
"testing"
|
|
|
|
miniredis "github.com/alicebob/miniredis/v2"
|
|
"github.com/zeromicro/go-zero/core/stores/redis"
|
|
)
|
|
|
|
func setupMiniRedis() (*miniredis.Miniredis, *redis.Redis) {
|
|
// 啟動 setupMiniRedis 作為模擬的 Redis 服務
|
|
mr, err := miniredis.Run()
|
|
if err != nil {
|
|
panic("failed to start miniRedis: " + err.Error())
|
|
}
|
|
|
|
// 使用 setupMiniRedis 的地址配置 go-zero Redis 客戶端
|
|
redisConf := redis.RedisConf{
|
|
Host: mr.Addr(),
|
|
Type: "node",
|
|
}
|
|
r := redis.MustNewRedis(redisConf)
|
|
|
|
return mr, r
|
|
}
|
|
|
|
func TestGetSymbolsFromSource_TableDriven(t *testing.T) {
|
|
mr, rdb := setupMiniRedis()
|
|
defer mr.Close()
|
|
|
|
cases := []struct {
|
|
name string
|
|
wantSymbols []string
|
|
expectErr bool
|
|
}{
|
|
{
|
|
name: "ok",
|
|
//wantSymbols: []string{"BTCUSDT", "ETHUSDT"},
|
|
expectErr: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
repo := MustBinanceRepository(BinanceRepositoryParam{
|
|
Conf: &config.Binance{
|
|
Key: "",
|
|
Secret: "",
|
|
TestMode: true,
|
|
},
|
|
Redis: rdb,
|
|
})
|
|
|
|
var wg sync.WaitGroup
|
|
total := 10
|
|
|
|
for range total {
|
|
wg.Add(1)
|
|
go func() {
|
|
defer wg.Done()
|
|
symbols, err := repo.GetSymbols(context.Background())
|
|
fmt.Println(symbols)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}()
|
|
}
|
|
wg.Wait()
|
|
//got, err := repo.GetSymbolsFromSource(context.Background())
|
|
//if tc.expectErr {
|
|
// assert.Error(t, err)
|
|
// assert.Nil(t, got)
|
|
//} else {
|
|
// assert.NoError(t, err)
|
|
// assert.Equal(t, tc.wantSymbols, got)
|
|
//}
|
|
})
|
|
}
|
|
}
|