Did It Actually Send?
Part 4 of Getting Started with Mocks: the notifier stops returning a message and starts sending one, so the test needs a spy instead of a return value.
Latest insights on Agentic AI workflows, cloud native architectures, and performance optimization best practices from the Speedscale team.
Part 4 of Getting Started with Mocks: the notifier stops returning a message and starts sending one, so the test needs a spy instead of a return value.
Part 3 of Getting Started with Mocks: the same seam, now returning refusals, timeouts and nonsense, so the failure paths finally get tested.
Part 7 of Getting Started with Mocks: a fake HTTP server finally runs the real client, so paths, headers, and parsing get tested. Java, Node, Go, Python.
Part 5 of Getting Started with Mocks: a test that pinned the retry schedule broke on a change no customer could notice. Here is how to rewrite it.
Part 6 of Getting Started with Mocks: stub, spy, fake, mock, and dummy, sorted by what each one does. Java, Node, Go, Python.
Part 1 of Getting Started with Mocks: the one job a mock does, the five situations where you need one, and what a green mocked test does not prove.
Part 9 of Getting Started with Mocks: a decision framework for stubs, fakes, fake servers, mock servers, record-and-replay, and real dependencies.
Part 2 of Getting Started with Mocks: a test you cannot write, one seam, and the smallest mock that makes a delayed package happen. Java, Node, Go, Python.
Part 8 of Getting Started with Mocks: the carrier renames a field, production breaks, and every mocked test still passes. Java, Node, Go, Python.
Security controls rarely break a banking platform alone. Their cumulative divergence from Kubernetes standards creates a compounding maintenance tax.