更好的Swift测试设置
在编写测试时,我们必须以良好的代码和质量来进行测试,使其变得更加干净,简单和快速,对吗?
但是有时候很难做到。 我们开始在测试中看到一些可重复的代码,设置和期望值。
今天,我将向您展示提示/技巧 ,以在没有框架的情况下为您的测试创建可重用,更简洁的设置。
让我们开始展示一个使用swift默认测试库的示例。 XCTest。
初试班
该类将以不同的方式测试UserRepo存储库类中名为findAdminsBy的函数。
上面的测试代码易于理解和重用,对吗? 具有一些帮助程序功能,安装程序在每次测试之前运行并重用变量。
是的,很简单并且可重用。 但是,让我们列出一些“问题”:
- 我们只测试UserRepo的一个功能,即findAdminsBy :
–如果要测试UserRepo的另一个功能将增加一些复杂性;
–要测试另一个功能,我们需要更改setUp功能或将其删除并将其放入期望功能中。 什么不好,因为这将是一个冗长的考验; - 需要更改默认设置时,作为第一个功能测试。 在期望函数内添加了一个设置;
- 每个期望函数都在调用可重复代码:
result = userRepo.findAdminsBy(email: email)
如有必要,添加新参数,我们需要在所有期望函数中进行更改。
那么,我们如何才能为上面的列表改进并创建一些解决方案?
我们将使用闭包概念用作设置并执行可重用的动作。
为了更好地了解闭包 ,这里是官方文档。
首先,我们需要创建两件事来帮助我们的测试。
#1 —动作结构
该Struct将有助于保持关闭状态直到被调用为止。
在闭包内部,将包含您需要保留的操作。
例如: result = userRepo.findAdminsBy(email: email)
。
用法将在稍后显示。
#2 —执行功能
该功能将有助于通过一些设置配置来运行/执行操作 。
波纹管是Executer.swift文件:
第二级考试-重构
现在,让我们使用这两个助手实现一个新的Test类。
我们可以看到的第一件事是操作和设置特定于findAdminsBy函数。
如果我们需要测试UserRepo的其他功能,只需使用自己的设置添加其他操作。
该代码现在更加灵活,可重用和更简洁。 该测试继续简单易懂。
如果您像我一样参加BDD测试,那么我将向您介绍测试框架Quick。 这将帮助您以BDD样式进行测试。
下面的代码包含相同的期望,上下文和设置。 但是被做成BDD风格。 更好地描述每个上下文和期望,以使代码更具可读性和可理解性。
第三类考试-BDD风格
结论
测试对于掩盖您的主要代码很重要。 它们需要可读性,不可理解性和可重用性。
创建这类测试的第一步是创建具有简单描述和上下文的好故事。 拥有更好的书面测试是很重要的。
这篇文章中显示的技巧/技巧是为了改进故事和上下文,有助于分离所有测试的所有必要设置。