# Fault Injection and Delays Compared

**Short answer:** WireMock offers extensive code-level fault injection and delays; a spec-first studio reaches the same edge cases through the contract and keeps the assertions tied to the schemas. The first is fine control in JVM tests; the second keeps the edge cases and the contract aligned.

## What code-level fault injection provides

Malformed responses, dropped connections, delays, and status faults. It is the right tool for hardening a client inside JVM tests.

## What contract-tied edge cases provide

| Property | Code-level | Contract-tied |
| --- | --- | --- |
| Edge cases | Authored in code | From responses |
| Assertions | As written | Tied to schemas |
| Language | JVM | Any |
| Maintenance | Code | Spec |

## Why the tie matters

A fault that is authored in the test can diverge from the contract. A contract-tied edge case is part of the declared surface, so the test and the mock cannot disagree.

## The honest takeaway

Use code-level fault injection for fine JVM control. Use the spec for shared, language-agnostic edge cases that stay in sync.

Return to the [Powerduck vs WireMock comparison](https://www.powerduck.com/blog/powerduck-vs-wiremock/), or read the [API mocking guide](https://www.powerduck.com/blog/api-mocking-guide-hub/).

