作者:Matt North —高级IOS工程师 let greeting = “Hello!” 在Grindr,测试是我们开发工作流程的关键部分。 像许多公司一样,我们正在将iOS代码库过渡到Swift。 这是从几个方面进行的调整,Swift中的单元测试提出了特殊的挑战。 但是我们坚信单元测试所带来的价值。 那么,我们如何在Grindr编写Swift测试? 最佳实务 面对现实吧,对任何人来说,开始单元测试都可能是一项艰巨的任务。 对于Swift开发人员而言,更糟糕的是,Apple几乎没有文档说明如何编写可测试的代码。 无论您是重构现有的代码库以使其可测试,还是要着眼于可测试性来开始一个新项目,编写可测试代码都需要一个好的计划。 我将介绍2种技术/原理,这些技术/原理将有助于使您的代码更具可测试性: 依赖注入/协议驱动开发 函数式编程技术 依赖注入 依赖注入不是一个新主意,但在iOS社区中并不普遍。 依赖注入是在创建类时提供类的依赖(通常在初始化器中)的一种做法。 这样做可以使您的类可重用和自定义。 除了可重用代码的许多优点外,在编写单元测试时,这一点尤其重要。 让我们看一个例子: 错误的方法 class UserRepository { static let shared = UserRepository() private let dbContext = NSManagedObjectContext() // returns an array of users func getUsers() -> [User] { let fetchRequest = NSFetchRequest(entityName: “User”) […]