Mock objects are simulated objects that are used in place of real objects during unit testing. They allow programmers to test code in isolation without relying on other objects or external dependencies. Some key reasons for using mock objects are: 1) They reduce code coupling and allow tests to pass independently. 2) They avoid repetitive testing by mocking code that has already been tested. 3) They make tests run faster by replacing slow or complex dependencies. Mock objects can be created using tools like Mocha, FlexMock or RSpec mocks to stub and mock method calls and behavior.