mockery
Go-MediatR
mockery | Go-MediatR | |
---|---|---|
20 | 4 | |
5,682 | 188 | |
2.4% | - | |
8.6 | 6.3 | |
22 days ago | 6 months ago | |
Go | Go | |
BSD 3-clause "New" or "Revised" License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
mockery
-
I Write Tests in Go
I'm far too lazy to write mocks by hand in go. You can generate a mock for a given interface with mockery https://github.com/vektra/mockery
-
go-ecommerce-microservices: A practical e-commerce microservices, built with cqrs, event sourcing, vertical slice architecture, event-driven architecture.
Some of the features: - โ Using Vertical Slice Architecture as a high level architecture - โ Using Event Driven Architecture on top of RabbitMQ Message Broker with a custom [Event Bus](pkg/messaging/bus/) - โ Using Event Sourcing in Audit Based services like [Orders Service](services/orders/) - โ Using CQRS Pattern and Mediator Patternon top of Go-MediatR library - โ Using Dependency Injection and Inversion of Controlon top of uber-go/fx library - โ Using RESTFul api with Echo framework and using swagger with swaggo/swag library - โ Using Postgres and EventStoreDB to write databases with fully supports transactions(ACID) - โ Using MongoDB and Elastic Search for read databases (NOSQL) - โ Using OpenTelemetry for collection Distributed Tracing with using Jaeger and Zipkin - โ Using OpenTelemetry for collection Metrics with using Prometheus and Grafana - โ Using Unit Test for testing small units with mocking dependent classes and using Mockery for mocking dependencies - โ Using End2End Test and Integration Test for testing features with all of their real dependeinces using docker containers (cleanup tests) and testcontainers-go library
- Direction of mockery: absorb different styles of mocks into this project ยท vektra mockery ยท Discussion #671
-
Go: Write Mock Test cases using Mockery and
Read mockery documentation: https://vektra.github.io/mockery/
-
Mocking unexported interfaces?
https://github.com/vektra/mockery is the better mocking framework in my biased opinion. The Google maintainers for gomock seem to have neglected the project.
-
I want to contribute to open source but don't know where to start
There are some one liner changes you can implement in https://github.com/vektra/mockery
-
Is gomock still maintained and recommended?
When there's just one heavyweight dependency you're interacting with, perhaps a one-off stub/fake is simpler, but I would posit that auto-generated mocks via things like mockery + go:generate leave less test code to maintain vs. perhaps many stubs across the project.
-
vektra/mockery: v2.21.0 includes "packages" config section, allowing 5x faster mock generation and more fine-grained control over mocks
Please take a look at the documentation linked here, and the related discussion topic that spawned this.
-
Issue implementing interface method that returns another interface
As you can see, the package has a chained method Logical().Write() . Since I want to create tests for PublicFunctionIWantToTest, I want to pass down all the functionality as interface so that I can use https://vektra.github.io/mockery/ to create mocks for it.
- FEEDBACK REQUESTED: Deprecation of automatic interface discovery ยท Discussion #549 ยท vektra/mockery
Go-MediatR
-
go-ecommerce-microservices: A practical e-commerce microservices, built with cqrs, event sourcing, vertical slice architecture, event-driven architecture.
Some of the features: - โ Using Vertical Slice Architecture as a high level architecture - โ Using Event Driven Architecture on top of RabbitMQ Message Broker with a custom [Event Bus](pkg/messaging/bus/) - โ Using Event Sourcing in Audit Based services like [Orders Service](services/orders/) - โ Using CQRS Pattern and Mediator Patternon top of Go-MediatR library - โ Using Dependency Injection and Inversion of Controlon top of uber-go/fx library - โ Using RESTFul api with Echo framework and using swagger with swaggo/swag library - โ Using Postgres and EventStoreDB to write databases with fully supports transactions(ACID) - โ Using MongoDB and Elastic Search for read databases (NOSQL) - โ Using OpenTelemetry for collection Distributed Tracing with using Jaeger and Zipkin - โ Using OpenTelemetry for collection Metrics with using Prometheus and Grafana - โ Using Unit Test for testing small units with mocking dependent classes and using Mockery for mocking dependencies - โ Using End2End Test and Integration Test for testing features with all of their real dependeinces using docker containers (cleanup tests) and testcontainers-go library
-
Mediator pattern in Go - is the juice worth to squeeze?
There are some mediator-like libraries like https://github.com/mehdihadeli/Go-MediatR or https://github.com/erni27/mob but they are not used widely like for example their C# sibling https://github.com/jbogard/MediatR. Also, neither I see custom implementations of mediator in many projects.
- Go-MediatR: A Golang package inspired by the`.Net MediatR` library, for easier implementation of a CQRS style application.
- `Go-MediatR`, implements the mediator pattern in Golang and helpful in creating CQRS-based applications. Inspired by `MediatR` library in the .NET
What are some alternatives?
gomock - GoMock is a mocking framework for the Go programming language.
go-food-delivery-microservices - ๐ A practical and imaginary food delivery microservices, built with golang, domain-driven design, cqrs, event sourcing, vertical slice architecture, event-driven architecture, and the latest technologies.
counterfeiter - A tool for generating self-contained, type-safe test doubles in go
swag - Automatically generate RESTful API documentation with Swagger 2.0 for Go.
minimock - Powerful mock generation tool for Go programming language
mob - mob is a generic-based, simple mediator / event aggregator Golang library. It supports in-process requests / events processing.
go-sqlmock - Sql mock driver for golang to test database interactions
copier - Copier for golang, copy value from struct to struct and more
hoverfly - Lightweight service virtualization/ API simulation / API mocking tool for developers and testers
fx - A dependency injection based application framework for Go.
moq - Interface mocking tool for go generate
Echo - High performance, minimalist Go web framework