更好的Swift测试设置

在编写测试时,我们必须以良好的代码和质量来进行测试,使其变得更加干净,简单和快速,对吗?

但是有时候很难做到。 我们开始在测试中看到一些可重复的代码,设置和期望值。

今天,我将向您展示提示/技巧 ,以在没有框架的情况下为您的测试创建可重用,更简洁的设置。

让我们开始展示一个使用swift默认测试库的示例。 XCTest。

初试班

该类将以不同的方式测试UserRepo存储库类中名为findAdminsBy的函数。

上面的测试代码易于理解和重用,对吗? 具有一些帮助程序功能,安装程序在每次测试之前运行并重用变量。

是的,很简单并且可重用。 但是,让我们列出一些“问题”:

  1. 我们只测试UserRepo的一个功能,即findAdminsBy
    –如果要测试UserRepo的另一个功能将增加一些复杂性;
    –要测试另一个功能,我们需要更改setUp功能或将其删除并将其放入期望功能中。 什么不好,因为这将是一个冗长的考验;
  2. 需要更改默认设置时,作为第一个功能测试。 在期望函数内添加了一个设置;
  3. 每个期望函数都在调用可重复代码:

result = userRepo.findAdminsBy(email: email)

如有必要,添加新参数,我们需要在所有期望函数中进行更改。

那么,我们如何才能为上面的列表改进并创建一些解决方案?

我们将使用闭包概念用作设置并执行可重用的动作。

为了更好地了解闭包 ,这里是官方文档。

首先,我们需要创建两件事来帮助我们的测试。

#1 —动作结构

该Struct将有助于保持关闭状态直到被调用为止。

在闭包内部,将包含您需要保留的操作。

例如: result = userRepo.findAdminsBy(email: email)

用法将在稍后显示。

#2 —执行功能

该功能将有助于通过一些设置配置来运行/执行操作

波纹管是Executer.swift文件:

第二级考试-重构

现在,让我们使用这两个助手实现一个新的Test类。

我们可以看到的第一件事是操作和设置特定于findAdminsBy函数。

如果我们需要测试UserRepo的其他功能,只需使用自己的设置添加其他操作。

该代码现在更加灵活,可重用和更简洁。 该测试继续简单易懂。

如果您像我一样参加BDD测试,那么我将向您介绍测试框架Quick。 这将帮助您以BDD样式进行测试。

下面的代码包含相同的期望,上下文和设置。 但是被做成BDD风格。 更好地描述每个上下文和期望,以使代码更具可读性和可理解性。

第三类考试-BDD风格

结论

测试对于掩盖您的主要代码很重要。 它们需要可读性,不可理解性和可重用性。

创建这类测试的第一步是创建具有简单描述和上下文的好故事。 拥有更好的书面测试是很重要的。

这篇文章中显示的技巧/技巧是为了改进故事和上下文,有助于分离所有测试的所有必要设置。

谢谢!