| name | interface-design |
| description | Interface design for testability (dependency injection, pure results, small surface). Use when designing APIs, reviewing testability, or refactoring for tests. |
Interface Design for Testability
Good interfaces make testing natural:
-
Accept dependencies, don't create them
function processOrder(order, paymentGateway) {}
function processOrder(order) {
const gateway = new StripeGateway();
}
-
Return results, don't produce side effects
function calculateDiscount(cart): Discount {}
function applyDiscount(cart): void {
cart.total -= discount;
}
-
Small surface area
- Fewer methods = fewer tests needed
- Fewer params = simpler test setup