Book Image

Test-Driven iOS Development with Swift - Fourth Edition

By : Dr. Dominik Hauser
Book Image

Test-Driven iOS Development with Swift - Fourth Edition

By: Dr. Dominik Hauser

Overview of this book

Test-driven development (TDD) is a proven way to find software bugs earlier on in software development. Writing tests before you code improves the structure and maintainability of your apps, and so using TDD in combination with Swift 5.5's improved syntax leaves you with no excuse for writing bad code. Developers working with iOS will be able to put their knowledge to work with this practical guide to TDD in iOS. This book will help you grasp the fundamentals and show you how to run TDD with Xcode. You'll learn how to test network code, navigate between different parts of the app, run asynchronous tests, and much more. Using practical, real-world examples, you'll begin with an overview of the TDD workflow and get to grips with unit testing concepts and code cycles. You'll then develop an entire iOS app using TDD while exploring different strategies for writing tests for models, view controllers, and networking code. Additionally, you'll explore how to test the user interface and business logic of iOS apps and even write tests for the network layer of the sample app. By the end of this TDD book, you'll be able to implement TDD methodologies comfortably in your day-to-day development for building scalable and robust applications.
Table of Contents (17 chapters)
1
Section 1 –The Basics of Test-Driven iOS Development
5
Section 2 –The Data Model
9
Section 3 –Views and View Controllers
13
Section 4 –Networking and Navigation

Refactoring to a diffable data source

In iOS 13, Apple introduced the UITableViewDiffableDataSource class. This class manages the update of a table view when the data changes and it can be used as the data source of any table view. It should be used, when possible, because implementing updates of a table view is a bit complicated and can lead to strange bugs and even crashes. In addition, the code needed to set up such a data source is often easier to read and reason about than the traditional implementation we used in the previous section.

Follow these steps to transform our implementation to one that uses a diffable data source:

  1. A diffable data source manages the data in the table view using a section and an item that both need to conform to the Hashable protocol. We already have an item we can use in the diffable data source, the ToDoItem structure. However, this structure does not yet conform to Hashable. To make it conform to that protocol, add the following code to...