Getting Started with Contract Tests

This happens. I accept this risk, because at least it doesn't become exponentially more expensive to fix over time, the way integrated tests do. I also accept this risk, because I have a systematic way to check the results: a small set of rules that govern which changes lead to which other changes.

For example, if I change the simulated output from endpoint/a in order to test its clients, then I need to check that simulated output against the test for endpoint/a that produces that output. I need a way to compare the simulated output for the clients to the actual output of the endpoint.

If I get the expected result of a test wrong, then there's not much I can do, except interpret that as a sign that I should try to simplify the expected result somehow. Most commonly, I generate the expected result from some kind of Builder that helps me avoid making that mistake.