Learn more about Testing

Mocking a network connection in your Swift Tests

Published on: December 12, 2024

Unit tests should be as free of external dependencies as possible. This means that you want to have full control over everything that happens in your tests. For example, if you’re working with a database, you want the database to be empty or in some predefined state before your test starts. You operate on the […]

Read post

Testing completion handler based code in Swift Testing

Published on: December 4, 2024

Swift’s new modern testing framework is entirely driven by asynchronous code. This means that all of our test functions are async and that we have to make sure that we perform all of our assertions “synchronously”. This also means that completion handler-based code is not as straightforward to test as code that leverages structured concurrency. […]

Read post

Testing requirements with #require in Swift Testing

Published on: November 28, 2024

In a previous post, I wrote about using the #expect macro to ensure that certain assertions you want to make about your code are true. We looked at testing boolean conditions as well as errors. In this post, I would like to take a look at a macro that goes hand-in-hand with #expect and that […]

Read post

Asserting state with #expect in Swift Testing

Updated on: December 5, 2024

I don’t think I’ve ever heard of a testing library that doesn’t have some mechanism to test assertions. An assertion in the context of testing is essentially an assumption that you have about your code that you want to ensure is correct. For example, if I were to write a function that’s supposed to add […]

Read post

Improving test coverage with parameterized tests in Swift testing

Published on: October 31, 2024

When you subscribe to the practice of test-driven development or just writing tests in general you’ll typically find that you’re going to be writing lots and lots of tests for pretty much everything in your codebase. This includes testing that varying inputs on the same function or on the same object result in expected behavior. […]

Read post

Swift Testing basics explained

Published on: October 23, 2024

Swift testing is Apple’s framework for running unit tests in a modern and more elegant way than it was with XCTest, which came before it. This post is the first one in a series of posts that will help you start using Swift Testing in your projects. In this post, we’ll take a look at […]

Read post

Testing completion handler APIs with Swift Testing

Published on: October 16, 2024

The Swift testing framework is an incredibly useful tool that allows us to write more expressive tests with convenient and modern APIs. This is my first post about Swift Testing, and I’m mainly writing it because I wanted to write about something that I encountered not too long ago when I tried to use Swift […]

Read post

Getting started with testing your Combine code

Published on: May 11, 2020

A question that often comes up when folks get into learning Combine is “how do I test code that uses Combine?”. In this week’s post, I will briefly explain the basics of testing Combine code. I will assume that you already know the basics of testing and Combine. If you’re just getting started with both […]

Read post

Faking network responses in tests

Updated on: February 10, 2020

Modern applications often rely on data from a network connection to work as intended. Sometimes they rely heavily on the network and are almost worthless without an internet connection while other apps can function mostly fine without a network connection. What these apps have in common is that they contain code that might be challenging […]

Read post

Getting started with unit testing your Swift code on iOS – part 2

Updated on: April 28, 2021

In part 1 of this two-part blog post, you’ve learned how to write synchronous unit tests for a login view model. As a reminder, you saw how to implement tests for the following requirements: When both login fields are empty, pressing the login button should trigger an error that informs the user that both fields […]

Read post

Expand your learning with my books

Practical Swift Concurrency (the video course) header image

Learn everything you need to know about Swift Concurrency and how you can use it in your projects with Practical Swift Concurrency the video course. It contains:

  • About ten hours worth of videos and exercises
  • Sample projects that use the code shown in the videos.
  • FREE access to the Practical Swift Concurrency book
  • Free updates for future iOS and Swift versions.

The course is available on Teachable for just $89

Enroll now