Logo
Section 1 / 8

Ruby 测试框架:RSpec

学习在 Docker 化环境中设置 RSpec 测试工具。

导入

Ruby 测试框架:RSpec

学习在 Docker 化环境中设置 RSpec 测试工具。

在上一章中,我们通过添加 Postgres 数据库完成了标准应用的设置。然而,开发工作尚未结束。作为一名专业的 Ruby 开发者,我们重视经过充分测试的代码,这让我们对交付可靠软件充满信心。随着我们围绕 Docker 重建开发环境,我们需要弄清楚测试如何融入其中。

RSpec
Course Image

无论你个人对测试有何偏好,了解如何让测试工具与 Docker 配合使用都非常重要,这样你就可以按需使用它们。在本章中,我们将设置流行的 Ruby 测试框架:RSpec。

## 为什么选择 RSpec 而不是 Minitest? 选择 RSpec 而非 Rails 默认的 Minitest 的原因包括:

...
  • 首先,设置 RSpec 需要稍多一些努力,因此学习过程中会涉及更多内容。
  • 其次,如果你是 Minitest 的忠实粉丝,也不必担心。阅读本章仍然有价值,可以继续熟悉我们在日常工作中所需的 Docker 命令。此外,配置过程(尤其是 Capybara)将非常相似,大部分内容可直接迁移到 Minitest。

如果你之前曾在 Rails 项目中设置过 RSpec,那么本章中你看到的大部分内容都会非常熟悉。事实上,仔细看的话,几乎看不出我们正在使用 Docker。这既证明了你在学习和理解 Docker 方面已经取得了长足进步,也说明一旦配置完成,Docker 工具就会退居幕后,直到你需要时才显现出来。尽管如此,本章仍有一些挑战。我们将逐步揭示使用 Docker 进行测试的一些细微之处。

我们还将发现,当涉及到使用 Capybara 配置系统规格以进行端到端浏览器测试时,事情并不像表面看起来那么简单。请记住,本章的重点并非教你如何测试代码,而是帮助你在 Docker 化环境中设置一些常见的测试工具。

设置 RSpec

现在我们的应用已通过 Compose 正确配置,设置 RSpec 将变得非常简单。让我们快速完成这一过程。

Gemfile 修改

根据 rspec-rails 的说明,其 gem 被添加到 Gemfile 中:

1group :development, :test do 2# 在代码任意位置调用 'byebug' 可停止执行并进入调试器... 3gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 4gem 'rspec-rails', '~> 3.8' 5end

为了应用这一更改,停止 web 服务,重新构建镜像以运行 bundle install,然后从新镜像创建容器。操作如下命令:

1docker-compose stop web 2docker-compose build web

安装 RSpec

接下来,用于安装 RSpec 并设置其文件结构的命令如下:

1$ docker-compose exec web bin/rails generate rspec:install 2 3create .rspec 4create spec 5create spec/spec_helper.rb 6create spec/rails_helper.rb

🍀 练习

在 RSpec 设置完成后,你可以通过以下方式运行测试:

1docker-compose exec web bin/rails spec

点击“运行”按钮后尝试执行此命令。

注意: 应用大约需要 2 分钟启动。请在看到提示 "You may begin now..." 后再开始遵循后续步骤。

No configuration found for ID: fe1f5809b28842d61c3edc9aa65d5b9e6fb5077b1e0d7ae93010d951379b2bc5

然而,正如你所预期的那样,它报告当前没有测试用例。让我们在下一章中对 RSpec 进行一次完整的实战演练。

微调我们的 Rails 镜像

我们的第一个 RSpec 测试