📝 RSpec教程
16篇技术文档📅  最后修改于: 2020-12-06 10:53:26        🧑  作者: Mango
RSpec是用于Ruby编程语言的单元测试框架。 RSpec与传统的xUnit框架(如JUnit)不同,因为RSpec是一种行为驱动的开发工具。这就是说,用RSpec编写的测试专注于被测试应用程序的“行为”。 RSpec并不着重于应用程序如何工作,而是着重于其行为方式,换句话说,即应用程序的实际功能。本教程将向您展示在使用Ruby构建应用程序时如何使用RSpec来测试代码。本教程适用于想学习如何用...
📅  最后修改于: 2020-12-06 10:53:54        🧑  作者: Mango
RSpec是用于Ruby编程语言的单元测试框架。 RSpec与传统的xUnit框架(如JUnit)不同,因为RSpec是一种行为驱动的开发工具。这意味着,用RSpec编写的测试专注于被测试应用程序的“行为”。 RSpec并不着重于应用程序如何工作,而是着重于其行为方式,换句话说,即应用程序的实际功能。RSpec环境首先,您将需要在计算机上安装Ruby。但是,如果您还没有做过,那么可以从Ruby主网...
📅  最后修改于: 2020-12-06 10:54:21        🧑  作者: Mango
让我们仔细看看我们的HelloWorld示例的代码。首先,如果不清楚,我们正在测试HelloWorld类的功能。当然,这是一个非常简单的类,仅包含一个方法say_hello()。这又是RSpec代码-描述关键字描述一词是RSpec关键字。它用于定义“示例组”。您可以将“示例组”视为测试的集合。describe关键字可以带有类名和/或字符串参数。您还需要传递一个块参数来描述,它将包含单个测试,或者在...
📅  最后修改于: 2020-12-06 10:54:57        🧑  作者: Mango
在本章中,我们将创建一个新的Ruby类,将其保存在自己的文件中,并创建一个单独的spec文件来测试该类。首先,在我们的新类中,它称为StringAnalyzer。您猜到它是一个简单的类,它分析字符串。我们的类只有一个方法has_vowels?顾名思义,如果字符串包含元音,则返回true,否则返回false。这是StringAnalyzer的实现-如果遵循HelloWorld部分,则会创建一个名为C...
📅  最后修改于: 2020-12-06 10:55:33        🧑  作者: Mango
如果您还记得我们最初的Hello World示例,则其中包含以下内容:关键字eql是RSpec“匹配器”。在这里,我们将介绍RSpec中的其他类型的匹配器。平等/身份匹配者匹配器以测试对象或值是否相等。MatcherDescriptionExampleeqPasses when actual == expectedexpect(actual).to eq expectedeqlPasses whe...
📅  最后修改于: 2020-12-06 10:55:55        🧑  作者: Mango
在本章中,我们将讨论RSpec Doubles,也称为RSpec Mocks。 Double是可以“代表”另一个对象的对象。您可能想知道这到底意味着什么以及为什么需要一个。假设您正在为学校构建应用程序,并且有一个代表学生教室的班级,还有一个为学生服务的班级,即您有一个教室班级和一个学生班级。您需要首先为其中一个类编写代码,所以可以说,从Classroom类开始-这是一个简单的类,它具有一个方法li...
📅  最后修改于: 2020-12-06 10:56:16        🧑  作者: Mango
如果您已经阅读了RSpec Doubles(又名Mocks)一节,那么您已经看过RSpec Stubs。在RSpec中,存根通常称为“方法存根”,它是一种特殊类型的方法,“代表”现有方法或尚不存在的方法。这是RSpec Doubles部分中的代码-在我们的示例中,allow()方法提供了测试ClassRoom类所需的方法存根。在这种情况下,我们需要一个对象,其行为就像Student类的实例一样,但...
📅  最后修改于: 2020-12-06 10:56:40        🧑  作者: Mango
在编写单元测试时,通常可以在测试之前和之后运行设置和拆卸代码。设置代码是用于配置或“设置”测试条件的代码。拆解代码进行清理,以确保环境处于一致状态以进行后续测试。一般来说,您的测试应相互独立。当您运行一整套测试并且其中一个失败时,您要确信它失败是因为所测试的代码存在错误,而不是因为先前的测试使环境处于不一致状态。RSpec中最常用的挂钩是在挂钩之前和之后。它们提供了一种定义和运行我们上面讨论的设置...
📅  最后修改于: 2020-12-06 10:56:56        🧑  作者: Mango
RSpec标签提供了一种在规范文件中运行特定测试的简便方法。默认情况下,RSpec将在其运行的规范文件中运行所有测试,但是您可能只需要运行其中的一个子集。假设您有一些运行非常快速的测试,而您刚刚更改了应用程序代码,并且只想运行快速测试,那么该代码将演示如何使用RSpec标记执行此操作。现在,将上面的代码保存在一个名为tag_spec.rb的新文件中。在命令行中,运行以下命令:rspec –tag ...
📅  最后修改于: 2020-12-06 10:57:14        🧑  作者: Mango
RSpec的强项之一是它提供了许多编写测试,清除测试的方法。当您的测试简短而整洁时,集中精力于预期的行为而不是专注于如何编写测试的细节将变得更加容易。 RSpec主题是另一个允许您编写简单明了的测试的快捷方式。考虑下面的代码-实际上,这很显然,但是我们可以使用RSpec的主题功能来减少示例中的代码量。我们通过将人员对象实例化到describe行中来实现。运行此代码时,您将看到此输出-注意,第二个代...
📅  最后修改于: 2020-12-06 10:57:32        🧑  作者: Mango
有时,您的RSpec示例需要一种共享可重用代码的简便方法。最好的方法是使用助手。助手基本上是常规的Ruby方法,您可以在示例中共享它们。为了说明使用助手的好处,让我们考虑以下代码-这段代码很清楚,但是尽可能减少重复的代码总是一个好主意。我们可以采用上面的代码,并使用名为create_and_walk_dog()的帮助程序方法来减少这种重复。运行上面的代码时,您将看到此输出-如您所见,我们能够将创建...
📅  最后修改于: 2020-12-06 10:57:56        🧑  作者: Mango
RSpec是一种灵活而强大的工具。 RSpec中的元数据功能也不例外。元数据通常指“关于数据的数据”。在RSpec中,这意味着有关您的describe,context及其block的数据。让我们看一个例子-运行上面的代码时,您将看到此输出-元数据提供了一种在RSpec文件中的各种范围内分配变量的方法。 example.metadata变量是一个Ruby哈希,其中包含有关您的示例和示例组的其他信息。...
📅  最后修改于: 2020-12-06 10:58:30        🧑  作者: Mango
在阅读本节之前,您可能需要阅读有关RSpec元数据的部分,因为事实证明,RSpec筛选基于RSpec元数据。假设您有一个规范文件,它包含两种类型的测试(示例):正功能测试和负(错误)测试。让我们这样定义它们-现在,将上面的文本保存为名为“ filter_spec.rb”的文件,然后使用此命令运行它-您将看到类似以下内容的输出-现在,如果只想重新运行此文件中的阳性测试该怎么办?还是只有阴性测试?我们...
📅  最后修改于: 2020-12-06 10:58:49        🧑  作者: Mango
学习RSpec时,您可能会读到很多关于期望的内容,起初可能会有些混乱。当您看到“期望”一词时,应牢记两个主要细节-Expectation只是it块中使用Expect()方法的一条语句。而已。没有比这更复杂的了。当您具有如下代码:Expect(1 + 1).to eq(2)时,示例中将具有Expectation。您期望表达式1 +1等于2。但是,由于RSpec是BDD测试框架,因此措辞很重要。通过将...
📅  最后修改于: 2020-12-06 10:59:02        🧑  作者: Mango
以下资源包含有关RSpec的其他信息。请使用它们来获得有关此方面的更深入的知识。RSpec上的有用链接RSpec-RSpec官方主页。RSpec Wiki–RSpec的维基百科参考。要在此页面上注册您的网站,请发送电子邮件至...