package cron import ( "context" "fmt" _ "github.com/gogf/gf/contrib/nosql/redis/v2" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gctx" "github.com/gogf/gf/v2/os/genv" "os" "testing" ) func TestMain(m *testing.M) { // 必须在任何import和g.Cfg()调用前设置环境变量 genv.Set("GF_GCFG_FILE", "D:/code/go/epic/manifest/config/config.yaml") ctx := gctx.New() _ = g.Cfg().MustGet(ctx, "server.address") fmt.Println(g.Cfg().Get(ctx, "redis.default.address")) code := m.Run() os.Exit(code) } type mockSync struct { fetchHeroDataErr error fetchArtifactDataErr error processHeroDataErr error processArtifactErr error } func (m *mockSync) fetchHeroDataFromAPI(ctx context.Context) ([]byte, error) { if m.fetchHeroDataErr != nil { return nil, m.fetchHeroDataErr } return []byte(`[{"code":"hero1"},{"code":"hero2"}]`), nil } func (m *mockSync) fetchArtifactDataFromAPI(ctx context.Context) ([]byte, error) { if m.fetchArtifactDataErr != nil { return nil, m.fetchArtifactDataErr } return []byte(`[{"code":"artifact1"}]`), nil } func (m *mockSync) processAndSaveHeroData(ctx context.Context, data []byte) error { return m.processHeroDataErr } func (m *mockSync) processAndSaveArtifactData(ctx context.Context, data []byte) error { return m.processArtifactErr } //func TestSyncHeroData_Success(t *testing.T) { // sync := &ThirdPartyDataSync{} // // 替换方法为mock // sync.fetchHeroDataFromAPI = (&mockSync{}).fetchHeroDataFromAPI // sync.processAndSaveHeroData = (&mockSync{}).processAndSaveHeroData // // err := sync.SyncHeroData(context.Background()) // if err != nil { // t.Errorf("expected success, got error: %v", err) // } //} // //func TestSyncHeroData_FetchError(t *testing.T) { // sync := &ThirdPartyDataSync{} // sync.fetchHeroDataFromAPI = (&mockSync{fetchHeroDataErr: errors.New("fetch error")}).fetchHeroDataFromAPI // sync.processAndSaveHeroData = (&mockSync{}).processAndSaveHeroData // // err := sync.SyncHeroData(context.Background()) // if err == nil || err.Error() != "fetch error" { // t.Errorf("expected fetch error, got: %v", err) // } //} // //func TestSyncHeroData_ProcessError(t *testing.T) { // sync := &ThirdPartyDataSync{} // sync.fetchHeroDataFromAPI = (&mockSync{}).fetchHeroDataFromAPI // sync.processAndSaveHeroData = (&mockSync{processHeroDataErr: errors.New("process error")}).processAndSaveHeroData // // err := sync.SyncHeroData(context.Background()) // if err == nil || err.Error() != "process error" { // t.Errorf("expected process error, got: %v", err) // } //} // //func TestSyncArtifactData_Success(t *testing.T) { // sync := &ThirdPartyDataSync{} // sync.fetchArtifactDataFromAPI = (&mockSync{}).fetchArtifactDataFromAPI // sync.processAndSaveArtifactData = (&mockSync{}).processAndSaveArtifactData // // err := sync.SyncArtifactData(context.Background()) // if err != nil { // t.Errorf("expected success, got error: %v", err) // } //} // //func TestSyncArtifactData_FetchError(t *testing.T) { // sync := &ThirdPartyDataSync{} // sync.fetchArtifactDataFromAPI = (&mockSync{fetchArtifactDataErr: errors.New("fetch error")}).fetchArtifactDataFromAPI // sync.processAndSaveArtifactData = (&mockSync{}).processAndSaveArtifactData // // err := sync.SyncArtifactData(context.Background()) // if err == nil || err.Error() != "fetch error" { // t.Errorf("expected fetch error, got: %v", err) // } //} // //func TestSyncArtifactData_ProcessError(t *testing.T) { // sync := &ThirdPartyDataSync{} // sync.fetchArtifactDataFromAPI = (&mockSync{}).fetchArtifactDataFromAPI // sync.processAndSaveArtifactData = (&mockSync{processArtifactErr: errors.New("process error")}).processAndSaveArtifactData // // err := sync.SyncArtifactData(context.Background()) // if err == nil || err.Error() != "process error" { // t.Errorf("expected process error, got: %v", err) // } //} func TestProcessAndSaveArtifactData(t *testing.T) { sync := &ThirdPartyDataSync{} // 构造一个合法的 JSON 数据 data := "[{\"code\":\"artifact1\"},{\"code\":\"artifact2\"}]" if err := sync.processAndSaveArtifactData(context.Background(), data); err != nil { t.Errorf("expected no error, got: %v", err) } } func TestProcessAndSaveHeroData(t *testing.T) { sync := &ThirdPartyDataSync{} // 构造一个合法的 JSON 数据 data := []byte(`[{"code":"hero1"},{"code":"hero2"}]`) if err := sync.processAndSaveHeroData(context.Background(), data); err != nil { t.Errorf("expected no error, got: %v", err) } } func TestSyncArtifactData_Success(t *testing.T) { sync := NewThirdPartyDataSync() err := sync.SyncArtifactData(context.Background()) if err != nil { t.Errorf("expected success, but got error: %v", err) } }