The whole point of testing is make sure you aren't breaking something when you add a feature/refactor/delete old code. Its purpose is to speed up development. Excessive unit testing just creates a brittle test suite, and adds more work without much benefit. It slows you down.
As a Rails dude focused on startups, iterating rapidly and what the user sees is what you care about. Therefore, I focus on integration tests that run the whole stack. That lets me mess with the implementation code without re-writing the test suite. At the same time, it provides regression protection and a good place to start troubleshooting. Plus, Rails already has tests for the "plumbing".
Tests should serve the developer, and speed up the iterative process, not add work to the project b/c of a dogmatic adherence to TDD or unit test all the things design.
I've been saying this for years.
The whole point of testing is make sure you aren't breaking something when you add a feature/refactor/delete old code. Its purpose is to speed up development. Excessive unit testing just creates a brittle test suite, and adds more work without much benefit. It slows you down.
As a Rails dude focused on startups, iterating rapidly and what the user sees is what you care about. Therefore, I focus on integration tests that run the whole stack. That lets me mess with the implementation code without re-writing the test suite. At the same time, it provides regression protection and a good place to start troubleshooting. Plus, Rails already has tests for the "plumbing".
Tests should serve the developer, and speed up the iterative process, not add work to the project b/c of a dogmatic adherence to TDD or unit test all the things design.
Just my (unpopular) opinion.