如何在Golang嘲笑Kafka的依赖性和作家?
我有一个结构,
type Server struct {
grpcServerPort int
grpcServer *grpc.Server
writer *kafka.Writer
}
该服务器有很多方法,包括 -
func NewServer(port int) *Server {
server := &Server{
grpcServerPort: port,
}
gs := grpc.NewServer()
server.grpcServer = gs
return server
}
func (s *Server) StartServer() {
createKafkaTopic("brokker_url", "my_topic")
s.writer = &kafka.Writer{
Addr: kafka.TCP("urls"),
Topic: "my_topic",
Balancer: &kafka.Hash{},
MaxAttempts: 1,
BatchSize: 1,
}
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", s.grpcServerPort))
if err != nil {
fmt.Printf("failed to listen: %v", err)
}
go s.grpcServer.Serve(listener)
}
func (s *Server) produceEvents(key string, val string) error {
msg := kafka.Message{
Key: []byte(key),
Value: []byte(val),
}
err = s.writer.WriteMessages(context.Background(), msg)
if err != nil {
return err
}
return nil
}
现在肌方法,如果没有Kafka Brok在我的机器上启动并运行的话。我想知道如何模拟肌肉和 productevents ,以便我可以为其他服务器方法编写单元测试用例。
I have a struct
type Server struct {
grpcServerPort int
grpcServer *grpc.Server
writer *kafka.Writer
}
this Server has lot of methods including -
func NewServer(port int) *Server {
server := &Server{
grpcServerPort: port,
}
gs := grpc.NewServer()
server.grpcServer = gs
return server
}
func (s *Server) StartServer() {
createKafkaTopic("brokker_url", "my_topic")
s.writer = &kafka.Writer{
Addr: kafka.TCP("urls"),
Topic: "my_topic",
Balancer: &kafka.Hash{},
MaxAttempts: 1,
BatchSize: 1,
}
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", s.grpcServerPort))
if err != nil {
fmt.Printf("failed to listen: %v", err)
}
go s.grpcServer.Serve(listener)
}
func (s *Server) produceEvents(key string, val string) error {
msg := kafka.Message{
Key: []byte(key),
Value: []byte(val),
}
err = s.writer.WriteMessages(context.Background(), msg)
if err != nil {
return err
}
return nil
}
Now createTopic method panic if no kafka broker is up and running at my machine. I want to know how to mock createTopic and produceEvents so that I can write unit test case for other methods of server.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以定义接口,然后定义模拟结构以实现它,现在您可以对其进行测试。
you can define an interface and then define a mock struct to implement it, now you can test it.
上周我刚刚遇到了你的案子。这就是我的解决方法:
现在,您可以用接口嘲笑Kafka依赖关系,
我希望这可以为您提供帮助!
I just met your case last week. And this is how I resolve that:
Now, you can mock Kafka dependencies with the interface
I hope this can help you!