As your application grows in features you want to make sure different flows work as expected. For isolated pieces of logic it’s very practical to use the built-in approach for tests in
In other cases you may encounter a more complex scenario, with different layers, from data input to database queries. You will expect a specific output given certain input.
Consider one of my very rencent projects Gabble, a chat solution you can host yourself.
Gabble has different layers of logic, every operation will be processed in each layer in the following order:
- Services (Domain Logic)
- Database (PostgreSQL)