Day03 测试写起乃 - 安装Rspec

安装 Rspec

在安装 Rspec 之前我们先产生一个 Rails 6的新专案到 Gemfile 可以看到其实在 test 里已经有这些 gem 了

group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 3.26'
  gem 'selenium-webdriver'
  # Easy installation and use of web drivers to run system tests with browsers
  gem 'webdrivers'
end

其实 capybara 以及 selenium 已经有了 其实就能够进行 整合测试了但先不及我们先来安装 Rspec 吧!

gem 'rspec-rails', '~> 5.0', '>= 5.0.2' 并且 bundle install

再来产生出相关 rspec 档案

rails generate rspec:install

load ~/.spring.rb
Running via Spring preloader in process 76963
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb

我们跟着 github 上的官方文件走过一遍吧!

# RSpec hooks into built-in generators
$ rails generate model user
      invoke  active_record
      create    db/migrate/20181017040312_create_users.rb
      create    app/models/user.rb
      invoke    rspec
      create      spec/models/user_spec.rb

# RSpec also provides its own spec file generators
$ rails generate rspec:model user
      create  spec/models/user_spec.rb

# List all RSpec generators
$ rails generate --help | grep rspec

基本上就是产生一个 User Model 和 User 的测试档

如何运作 Rspec

看官方文件有以下几种运作方式

# 预设: 跑所有spec资料夹底下的 *_spec.rb
$ bundle exec rspec 

# 指定只跑 spec 底下的 models 资料夹
$ bundle exec rspec spec/models

# 指定只跑 spec/controllers底下的accounts_controller_spec.rb
$ bundle exec rspec spec/controllers/accounts_controller_spec.rb

# 指定只跑 spec/controllers底下的accounts_controller_spec.rb第八行的测试案例
$ bundle exec rspec spec/controllers/accounts_controller_spec.rb:8

# 查看指令
$ bundle exec rspec --help

那有时候会发现有些测试不是每次都正确这时候我会使用 repeat 来重复跑测试

跑10次 accounts_controller_spec.rb 这个测试

$ repeat 10 bundle exec rspec spec/controllers/accounts_controller_spec.rb

又或是想跑两个档案?

$ bundle exec rspec spec/controllers/accounts_controller_spec.rb spec/controllers/profiles_controller_spec.rb

明天我们就来写出我们的第一个测试档搂!

参考来源:

rspec-rails


<<:  Golang 程序码初读

>>:  [Day 3] 资料产品第一层 - 原始资料的类型

Day25 参加职训(机器学习与资料分析工程师培训班),Python程序设计

建立网路的其他写法 from tensorflow.keras.models import Sequ...

【从零开始的Swift开发心路历程-Day6】简易调色盘Part2

昨天我们拉完@IBOutlet了,现在要来说明如何让ImageView根据Slider的左右滑动而改...

Day-5 谁是最棒的狗勾

谁是最棒的狗勾 tags: IT铁人 效能的定义 生活中很常对各种东西做出比较,哪本书比较好看、哪个...

[Day13] 介面篇 - 显示血条3

在ActionBattle_Var.js修改成 接着开一支新程序叫ActionBattle_Spri...

[Day20] 与问题成员对话-案例二:水涨船高的 Scrum Master 接班人

今天来聊聊有关对话的第二个案例: 案例二:水涨船高的 Scrum Master 接班人 推动改革,很...