<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/a-universal-approach-to-mocking-with-continuations-pcjsi5jr9" -->

---
title: A universal approach to mocking with continuations
description: A technique for cleaner, more expressive testing by defunctionalising continuations into a data type called Effect. Instead of writing per-test mocks,...
canonical: https://daily.dev/posts/a-universal-approach-to-mocking-with-continuations-pcjsi5jr9
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: A universal approach to mocking with continuations | daily.dev
og:description: A technique for cleaner, more expressive testing by defunctionalising continuations into a data type called Effect. Instead of writing per-test mocks,...
og:url: https://daily.dev/posts/a-universal-approach-to-mocking-with-continuations-pcjsi5jr9
og:image: https://api.daily.dev/og/posts/pcJsI5Jr9.png
og:image:alt: A universal approach to mocking with continuations
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# A universal approach to mocking with continuations

**[Lobsters](https://daily.dev/sources/lobsters)** · 5 min read · 0 upvotes · 0 comments

## Summary

A technique for cleaner, more expressive testing by defunctionalising continuations into a data type called Effect. Instead of writing per-test mocks, effectful calls like fetch are captured as data variants (e.g., Fetch(key, resume)), allowing tests to drive computation step by step. This approach verifies call order, argument correctness, and return value handling without mocking libraries, stub objects, or dependency injection frameworks. The pattern works uniformly for any effect and is demonstrated in Gleam.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://crowdhailer.me/2026-07-30/a-universal-approach-to-mocking>

## Similar posts on daily.dev

- [Abstracting effects with continuations](https://daily.dev/posts/abstracting-effects-with-continuations-rscdehe5t) · Lobsters · 0 upvotes · 0 comments
- [You don't need an effect system](https://daily.dev/posts/you-don-t-need-an-effect-system-1jg8fivth) · Lobsters · 0 upvotes · 0 comments
- [Mocks Are Your Friends, Not Your Servants](https://daily.dev/posts/mocks-are-your-friends-not-your-servants-ii0t7a6yi) · Beam Bloggers Webring · 0 upvotes · 0 comments
- [Functional Optics for Modern Java](https://daily.dev/posts/functional-optics-for-modern-java-59ct3kmps) · Scott Logic · 0 upvotes · 0 comments

---

Tags: [#testing](https://daily.dev/tags/testing), [#functional-programming](https://daily.dev/tags/functional-programming), [#gleam](https://daily.dev/tags/gleam)

[View this post on daily.dev](https://daily.dev/posts/a-universal-approach-to-mocking-with-continuations-pcjsi5jr9)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"A universal approach to mocking with continuations","url":"https://daily.dev/posts/a-universal-approach-to-mocking-with-continuations-pcjsi5jr9","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/a-universal-approach-to-mocking-with-continuations-pcjsi5jr9"},"datePublished":"2026-07-31T14:44:14.185Z","dateModified":"2026-07-31T16:32:36.409Z","description":"A technique for cleaner, more expressive testing by defunctionalising continuations into a data type called Effect. Instead of writing per-test mocks,...","image":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","thumbnailUrl":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/a-universal-approach-to-mocking-with-continuations-pcjsi5jr9","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"testing,functional-programming,gleam","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"A universal approach to mocking with continuations"}]}
```

