gookit / event

📢 Lightweight event manager and dispatcher implements by Go. Go实现的轻量级的事件管理、调度程序库, 支持设置监听器的优先级, 支持使用通配符来进行一组事件的监听
https://pgk.go.dev/github.com/gookit/event
MIT License
508 stars 59 forks source link

event.on("*", xxxx) not work #3

Closed Richard1ybb closed 3 years ago

Richard1ybb commented 3 years ago
Event2FurcasTicketCreate              = "kapal.furcas.ticket.create"

event.On("*", &kapal.DefaultNotify)                           // not work
event.On("kapal.furcas.ticket*", &kapal.DefaultNotify         // not work
event.On(kapal.Event2FurcasTicketReset, &kapal.DefaultNotify) // work
inhere commented 3 years ago

hi @Richard1ybb

My tests are all working :)

    const Event2FurcasTicketCreate  = "kapal.furcas.ticket.create"

    event.On("*", handler)
    event.On("kapal.furcas.ticket.*", handler)
    event.On(Event2FurcasTicketCreate, handler)

https://github.com/gookit/event/blob/aa601afd98bf802feab84ad1643d086d90f5182c/all_test.go#L272-L304

Richard1ybb commented 3 years ago

这是最小可复现代码

type test_notify struct {}

var is_Run = false

func (notify *test_notify) Handle(e event.Event) error {
    is_Run = true
    return nil
}

func TestTicketCreate_Handle_1(t *testing.T) {
    TestNotify := test_notify{}
    event.On("*", &TestNotify)
    err, _ := event.Fire("test_notify", event.M{})
    assert.Nil(t, err)
    assert.NotEqual(t, is_Run, true)

    event.On("test_notify", &TestNotify)
    err, _ = event.Fire("test_notify", event.M{})
    assert.Nil(t, err)
    assert.Equal(t, is_Run, true)
}
inhere commented 3 years ago

refer #8