Book Image

Test-Driven iOS Development with Swift

By : Dr. Dominik Hauser
Book Image

Test-Driven iOS Development with Swift

By: Dr. Dominik Hauser

Overview of this book

Test-driven development (TDD) is a proven way to find software bugs early. Writing tests before your code improves the structure and maintainability of your app. Test-Driven iOS Development with Swift will help you understand the process of TDD and how it impacts your applications written in Swift. Through practical, real-world examples, you’ll start seeing how to implement TDD in context. We will begin with an overview of your TDD workflow and then deep-dive into unit testing concepts and code cycles. We will showcase the workings of functional tests, which will help you improve the user interface. Finally, you will learn about automating deployments and continuous integration to run an environment.
Table of Contents (15 chapters)
Test-Driven iOS Development with Swift
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
Index

Implementing ItemListDataProvider


In the previous section, we created a class to act as the data source and delegate for the item list table view. In this section, we will implement its properties and methods. But we first need a test case class for ItemListDataProvider.

Conducting the first tests

Open Project Navigator and select the ToDoTests group. Add a new Unit Test Case Class, call it ItemListDataProviderTests, and choose the Controller folder as the location to store the file. Add the @testable import ToDo import statement and remove the two test template methods.

The table view should have two sections: one for unchecked to-do items and the other for checked items. Add the following test to ItemListDataProviderTests:

func testNumberOfSections_IsTwo() {
    let sut = ItemListDataProvider()
    
    let tableView = UITableView()
    tableView.dataSource = sut
    
    let numberOfSections = tableView.numberOfSections
    XCTAssertEqual(numberOfSections, 2)
}

First, we create an instance...