支持6位cron表达式
This commit is contained in:
69
internal/infra/utils/time_test.go
Normal file
69
internal/infra/utils/time_test.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package utils_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/utils"
|
||||
)
|
||||
|
||||
func TestGetNextCronTime(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
expression string
|
||||
expectError bool
|
||||
}{
|
||||
{
|
||||
name: "标准5位cron表达式",
|
||||
expression: "0 15 10 * * *",
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "带秒的6位cron表达式",
|
||||
expression: "30 0 15 10 * *",
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "带'?'通配符的cron表达式",
|
||||
expression: "0 15 10 * * ?",
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "带秒和'?'通配符的cron表达式",
|
||||
expression: "30 0 15 10 * ?",
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "无效的cron表达式",
|
||||
expression: "invalid-cron",
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
name: "每秒执行",
|
||||
expression: "* * * * * *",
|
||||
expectError: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
nextTime, err := utils.GetNextCronTime(tt.expression)
|
||||
if tt.expectError {
|
||||
if err == nil {
|
||||
t.Errorf("期望得到一个错误,但没有得到")
|
||||
}
|
||||
} else {
|
||||
if err != nil {
|
||||
t.Errorf("不期望得到错误,但得到了: %v", err)
|
||||
}
|
||||
if nextTime.IsZero() {
|
||||
t.Errorf("期望得到一个有效的下一次执行时间,但得到了零值时间")
|
||||
}
|
||||
// 可以在这里添加更具体的断言来验证时间是否在预期范围内
|
||||
if !nextTime.After(time.Now()) {
|
||||
t.Errorf("期望的下一次执行时间 %v 应该在当前时间之后", nextTime)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user