dockertest
validator
Our great sponsors
dockertest | validator | |
---|---|---|
48 | 68 | |
3,914 | 15,361 | |
2.0% | 2.6% | |
4.5 | 7.4 | |
about 1 month ago | 13 days ago | |
Go | Go | |
Apache License 2.0 | 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.
dockertest
-
Testcontainers
I am using https://github.com/ory/dockertest for tests, specifically for databases. Is there any advantage to use Testcontainers?
I've been using Docker containers for integration testing for last few years. I usually roll my own custom solution in Go using the https://github.com/ory/dockertest package though that adds necessary functionality around running migrations, creating kafka topics, or similar. Will definitely need to check out this next time I'm writing a test package
-
Level UP your RDBMS Productivity in GO
Now, let's run the tests. For this purpose, we are going to use dockertest, but test containers is also a good solution.
-
Golang testing using docker services via dockertest
During my path learning go so far I have come across some amazing libraries and utilites, one of my favourite for integration testing is dockertest.
-
How to start a Go project in 2023
Things I can't live without in a new Go project in no particular order:
- https://github.com/golangci/golangci-lint - meta-linter
- https://goreleaser.com - automate release workflows
- https://magefile.org - build tool that can version your tools
- https://github.com/ory/dockertest/v3 - run containers for e2e testing
- https://github.com/ecordell/optgen - generate functional options
- https://golang.org/x/tools/cmd/stringer - generate String()
- https://mvdan.cc/gofumpt - stricter gofmt
- https://github.com/stretchr/testify - test assertion library
- https://github.com/rs/zerolog - logging
- https://github.com/spf13/cobra - CLI framework
FWIW, I just lifted all the tools we use for https://github.com/authzed/spicedb
We've also written some custom linters that might be useful for other folks: https://github.com/authzed/spicedb/tree/main/tools/analyzers
-
Beginner-friendly API made with Go following hexagonal architecture.
I've used dockertest a bunch and it is really amazing.
-
How to unit test your database interactions with Docker
Reminds me of https://github.com/ory/dockertest
-
When to mock and what to mock in a Web API?
If your project is relatively simple and you can get away with recreating your scenarios against a real mock database and run other related services locally. It would be good to setup docker containers for your test scripts and write e2e tests. I believe e2e tests are harder but more useful in understanding/reasoning how users are impacted.
-
Don't Mock the Database
Just a heads up, the repository in your comment is invalid, the correct link is https://github.com/ory/dockertest
-
Mocking database calls without a library?
Don't mock. Use https://github.com/ory/dockertest to actually run tests against a dockerized DB.
validator
- API completa em Golang - Parte 7
- API completa em Golang - Parte 3
-
Is there any equivalent to pydantic, serde, etc?
go-playground/validator
Go uses zero values to provide sensible default values. It's a design choice. With a quick Google you'll find several libraries such as https://github.com/go-playground/validator or https://github.com/asaskevich/govalidator. I use validator whenever I need to ensure any JSON I unmarshalled is correct.
- API completa em Golang - Parte 1
-
Yet another validator 0.9.5
Now it has most of the Playground validator's common checks and a few own tricks.
-
Openapi server generation
In Go I've found this package - https://github.com/go-playground/validator. It seems popular in the community, but it is tag-based. It looks like if I wanted to use it - I would have to basically duplicate structs.
-
Request Validations in Go REST API
I use https://github.com/go-playground/validator, but honestly, I am not a fan. I just haven’t found anything better.
-
Tools besides Go for a newbie
IDE: use whatever make you productive. I personally use vscode. VCS: git, as golang communities use github heavily as base for many libraries. AFAIK Linter: use staticcheck for linting as it looks like mostly used linting tool in go, supported by many also. In Vscode it will be recommended once you install go plugin. Libraries/Framework: actually the standard libraries already included many things you need, decent enough for your day-to-day development cycles(e.g. `net/http`). But here are things for extra: - Struct fields validator: validator - Http server lib: chi router , httprouter , fasthttp (for non standard http implementations, but fast) - Web Framework: echo , gin , fiber , beego , etc - Http client lib: most already covered by stdlib(net/http), so you rarely need extra lib for this, but if you really need some are: resty - CLI: cobra - Config: godotenv , viper - DB Drivers: sqlx , postgre , sqlite , mysql - nosql: redis , mongodb , elasticsearch - ORM: gorm , entgo , sqlc(codegen) - JS Transpiler: gopherjs - GUI: fyne - grpc: grpc - logging: zerolog - test: testify , gomock , dockertest - and many others you can find here
-
popularity behind pydantic
I work in Go now, it's crazy poor in that regard - let's just mention for instance "zero values" ( so things can remain uninitialized with a default value you can't choose ), recurring questions around "empty vs null vs not set", and everyone using go-playground/validator where you attach rules as comments ( "tags" really, but it's barely the same thing ) that are interpreted at runtime, extremely cumbersome to extend. And all that with an insane amount of boilerplate and footguns. But what really takes the cake: if you dare saying it's extremely weak you'll get shut down by the community. You're supposed to praise it, and indeed, hate python ( you know, that toy language that didn't evolve since 2008 ).
What are some alternatives?
testcontainers-go - Testcontainers for Go is a Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done.
ozzo-validation - An idiomatic Go (golang) validation package. Supports configurable and extensible validation rules (validators) using normal language constructs instead of error-prone struct tags.
govalidator - [Go] Package of validators and sanitizers for strings, numerics, slices and structs
grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC
viper - Go configuration with fangs
uuid - Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.
fiber-swagger - fiber middleware to automatically generate RESTful API documentation with Swagger 2.0.
Validate - ⚔ Go package for data validation and filtering. support Map, Struct, Form data. Go通用的数据验证与过滤库,使用简单,内置大部分常用验证、过滤器,支持自定义验证器、自定义消息、字段翻译。
Echo - High performance, minimalist Go web framework
Password validator library for Go - Flexible and customizable password validation
mockaroo - Mock-A-🦘 (mock-aa-roo) a comprehensive HTTP/HTTPS interface mocking tool for all your development and testing needs!
chi - lightweight, idiomatic and composable router for building Go HTTP services