a netty like asynchronous network I/O library based on tcp/udp/websocket; a bidirectional RPC framework based on JSON/Protobuf; a microservice framework based on zookeeper/etcd
Apache License 2.0
220
stars
69
forks
source link
Unable to mock getty.Session interface, due to composition with unexported functions in getty.Connection. #100
What would you like to be added:
To resolve this problem, it is necessary to modify all the methods defined in getty.Connection to be exported with uppercase names.
Why is this needed:
Seata-go references getty, and encountered obstacles when writing unit tests related to the getty.Session interface. Neither gomock nor gomonkey can mock the getty.Session interface.
The issue arises from the fact that the getty.Connection interface defines lowercase unexported functions, and the getty.Session interface composes getty.Connection, making it impossible to mock getty.Session from outside the getty package.
gomonkey can stub non-exported private functions, but the prerequisite is to have a struct instance. Due to the aforementioned issue with getty.Connection, it's not possible to create a getty.Session interface instance outside the getty package.
What would you like to be added: To resolve this problem, it is necessary to modify all the methods defined in getty.Connection to be exported with uppercase names.
Why is this needed: Seata-go references getty, and encountered obstacles when writing unit tests related to the getty.Session interface. Neither gomock nor gomonkey can mock the getty.Session interface.
The issue arises from the fact that the getty.Connection interface defines lowercase unexported functions, and the getty.Session interface composes getty.Connection, making it impossible to mock getty.Session from outside the getty package.
gomonkey can stub non-exported private functions, but the prerequisite is to have a struct instance. Due to the aforementioned issue with getty.Connection, it's not possible to create a getty.Session interface instance outside the getty package.