Tag: 测试

单元测试— UITableView

向用户显示数据的最常见方式是使用某种无休止的表格,例如Instagram的feed,Facebook的时间轴,WhatsApp的消息等。 作为iOS开发人员,您有一些工具可以实现这一目标。 您可以使用UITableView , UICollectionView , IGListKit等。 所有这些工具都有共同点,它们都使用委托/数据源模式,并具有用于显示数据的自定义视图。 在本文中,我将展示如何使用UITableView测试集合的委托,数据源和视图。 数据源 首先,让我们创建一个新文件并从UITableViewDataSource实现一些方法。 在此示例中,我们将使用默认的UITableViewCell作为单元格,使用String作为模型,但是可以随意使用所需的任何单元格和模型。 根据[String]?我们的单元格将具有不同的标题[String]? 数据。 MyDelegateDatasource文件 之后,让我们编写一些测试。 在每次测试之前,我们将创建一个[String]来填充我们的表,创建一个MyDelegateDatasource对象,将UITableViewCell注册到我们的表中并设置其委托和数据源。 目前,我们有两项测试: 行数 节数 我们的行数应为5,并应包含1个部分。 cellForRow方法将在以后进行测试。 MyDelegateDatasource测试文件 代表 我们的代表有点不同,要测试它,我们需要对其进行模拟,一种简单的方法是创建一个协议。 每次用户选择一个单元格时,我们都将其称为该协议。 因此,现在我们可以更新MyDelegateDatasource以具有MyDelegateDatasourceProtocol对象,并在每次UITableViewDelegate调用didSelectRow时都调用它。 不要忘记实现UITableViewDelegate didSelectRow方法。 MyDelegateDatasource文件 为了测试该委托,我们需要创建一个实现该协议的对象,换句话说,我们需要对其进行模拟。 我们将使用此对象检查在UITableViewDelegate调用didSelectRow时是否正在调用我们的委托。 这个模拟很简单,只需要在调用didSelectCell方法时更改一个布尔值并保存接收到的参数即可。 MyDelegateDatasourceMock文件 让我们更新测试文件,创建一个MyDelegateDatasourceMock对象并在MyDelegateDatasource上设置委托属性。 我们的委托测试是在调用tableView(tableView, didSelectRowAt: indexPath)之前检查didSelectCell属性是否为false之后是否将其更改为true 。 另外,我们正在验证收到的数据是否符合预期。 视图 我们的测试未涵盖cellForRow方法。 为了检查UITableViewCell是否按预期方式运行,我们使用了Nimble + Snapshot。 让我们添加一些测试来检查它们。 MyDelegateDatasourceTest文件 在我们的项目中,在自己的文件中实现委托和数据源将在测试时大有帮助,并使它们更易于编写和测试。 这是一系列文章的第4部分,展示了如何在iOS上测试某些内容。 第1部分-具有Nimble + Snapshots的UIViews 第2部分-单元测试-JSON的解析 第3部分-单元测试-网络请求 附:如果您喜欢这篇文章,请在Twitter上分享,或在中级推荐,或两者都=)。 […]