mock-based testing