https://medium.com/@jasonirvine76/applying-software-testing-in-real-world-projects-understanding-mock-objects-and-stubs-for-test-385d93434a1b