How to test software: mocking, stubbing, and contract testing
circleci.com