RSpec_Gem調査メモ

## 開発環境

* Ruby 2.5.3
* Rails 5.2.2

## [spec-rails](https://github.com/rspec/rspec-rails/)

`rspec-rails` デフォルトのテストフレームワークであるMinitestのドロップイン代替として、[RSpec](https://rspec.info/)テストフレームワークを[Ruby on Rails](https://rubyonrails.org/)にもたらします。

RSpecでは、テストはアプリケーションコードを検証する単なるスクリプトではありません。また、仕様（または*仕様、*略して）です。アプリケーションがどのように動作するかについての詳細な説明を、わかりやすい英語で表現します。

[公式ドキュメント](https://relishapp.com/rspec/rspec-rails/docs)

[rspec-rails APIドキュメント](https://www.rubydoc.info/gems/rspec-rails)

```ruby
group :test, :development do
  gem 'rspec-rails', '~> 3.8'
end
```
## [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails)

テストデータの作成

[factory_bot_rails APIドキュメント](https://www.rubydoc.info/gems/factory_bot/file/GETTING_STARTED.md)

```ruby
group :development, :test do
  gem 'factory_bot_rails'
end
```

## [Capybara(記述済)](https://github.com/teamcapybara/capybara)

Webアプリケーションの受け入れテストフレームワーク

[capybara ドキュメント](http://teamcapybara.github.io/capybara/)[capybara APIドキュメント](https://rubydoc.info/github/teamcapybara/capybara/master)

```ruby
group :test do
  gem 'capybara', '>= 2.15'
end
```

## [capybara-screenshot](https://github.com/mattheworiordan/capybara-screenshot)

Capybaraシナリオが失敗したときにスクリーンショットを自動的に保存する

[capybara-screenshot APIドキュメント](https://rubydoc.info/gems/capybara-screenshot)

```ruby
group :test do
  gem 'capybara-screenshot'
end
```

## [launchy](https://github.com/copiousfreetime/launchy)

A helper for launching cross-platform applications in a fire and forget manner

Rubyで外部アプリケーションを起動できる(現在、ブラウザの起動のみがサポートされています。)

[launchy APIドキュメント](https://rubydoc.info/gems/launchy)

```ruby
group :test do
  gem 'launchy'
end
```

## [selenium-webdriver(記述済)](https://rubygems.org/gems/selenium-webdriver/versions/3.142.2?locale=ja)

ブラウザー自動化フレームワークとエコシステム

[selenium-webdriver APIドキュメント](https://www.rubydoc.info/gems/selenium-webdriver)

```ruby
group :test do
  gem 'selenium-webdriver'
end
```

## [webdrivers(記述済)](https://github.com/titusfortner/webdrivers/)

サポートされているすべてのWebドライバーのインストールと更新により、Seleniumテストをより簡単に実行できます。

gem 'chromedriver-helper'のサポートが終了し、その後継として作成された

[webdrivers APIドキュメント](https://www.rubydoc.info/gems/webdrivers)

```ruby
group :test do
  gem 'webdrivers', , '~> 4.0'
end
```

## [rubocop-rspec](https://github.com/rubocop-hq/rubocop-rspec)

RSpecファイルのコードスタイルチェック。RuboCopコードスタイルの強制およびリンティングツールのプラグイン。

[rubocop-rspec APIドキュメント](https://www.rubydoc.info/gems/rubocop-rspec)

```ruby
group :development, :test do
  gem 'rubocop-rspec', require: false
end
```

## [database_cleaner](https://github.com/DatabaseCleaner/database_cleaner/)

データベースをクリーニングするための戦略。テストのためにクリーンな状態を確保するために使用できます。

テスト後に作成されたデータを削除する

[Database Cleaner APIドキュメント](https://www.rubydoc.info/gems/database_cleaner)

```ruby
group :test do
  gem 'database_cleaner-active_record'
end
```

## [simplecov](https://github.com/colszowka/simplecov)

SimpleCovは、Ruby用のコードカバレッジ分析ツールです。

[Rubyのビルトインカバレッジ](https://ruby-doc.org/stdlib/libdoc/coverage/rdoc/Coverage.html)ライブラリを使用してコードカバレッジデータを収集しますが、クリーンなAPIを提供して結果をフィルター処理、グループ化、マージ、フォーマット、表示することにより、結果の処理をはるかに容易にします。わずか数行のコードでセットアップします。

SimpleCov / Coverageトラックはルビーコードをカバーしており、erb、slim、hamlなどの一般的なテンプレートソリューションのカバレッジの収集はサポートされていません。

SimpleCovの公式フォーマッターは、[simplecov-html](https://github.com/colszowka/simplecov-html)という別のgemとしてパッケージ化されていますが、SimpleCovを起動すると自動的にインストールおよび構成されます。興味があれば[、GitHubでも](https://github.com/colszowka/simplecov-html)見つけることができます。

ほとんどの場合、すべてのタイプのテスト、Cucumber機能などを含むプロジェクトの全体的なカバレッジ結果が必要になります。SimpleCovは、レポートを生成するときに結果をキャッシュおよびマージして自動的に処理します。これにより、空白のスポットのより良い全体像が得られます。

[simplecov APIドキュメント](https://www.rubydoc.info/gems/simplecov/)

```ruby
group :test, :development do
  gem 'simplecov', require: false
end
```

## [teaspoon-jasmine](https://github.com/jejacks0n/teaspoon)

RailsのJavascriptテストランナー。Selenium、BrowserStack、またはPhantomJSを使用します。

[teaspoon-jasmine APIドキュメント](https://rubydoc.info/gems/teaspoon-jasmine)

```ruby
group :development, :test do
  gem "teaspoon-jasmine"
end
```

## [guard-rspec](https://github.com/guard/guard-rspec)

ファイル監視して変更されたときに仕様を自動的かつインテリジェントに起動できます。

[guard-rspec APIドキュメント](https://www.rubydoc.info/gems/guard-rspec/)

```ruby
group :development, :test do
  gem 'guard-rspec', require: false
end
```

## [Faker](https://github.com/faker-ruby/faker)

名前、住所、電話番号などの偽データを生成するためのライブラリ。

[faker APIドキュメント](https://www.rubydoc.info/gems/faker)

```ruby
group :test do
  gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'master'
end
```

## [rails-controller-testing](https://github.com/rails/rails-controller-testing)

このgemはassigns、コントローラーテストとassert_template コントローラーおよび統合テストの両方を再現します。

[rails-controller-testing APIドキュメント](https://www.rubydoc.info/gems/rails-controller-testing)

```ruby
group :test do
  gem 'rails-controller-testing'
end
```

## [parallel_tests](https://github.com/grosser/parallel_tests/)

Speedup Test :: Unit + RSpec + Cucumber + Spinach（複数のCPUコアで並列実行）

ParallelTestsは、テストを（行数またはランタイムごとに）偶数のグループに分割し、各グループを独自のデータベースを使用して単一プロセスで実行します。

[parallel_tests APIドキュメント](https://www.rubydoc.info/gems/parallel_tests/)

```ruby
group :test, :development do
  gem 'parallel_tests'
end
```

## [Shoulda Matchers](https://github.com/thoughtbot/shoulda-matchers)

Shoulda Matchersは、RSpecおよびMinitest互換のワンライナーを提供して、手作業で記述した場合、はるかに長く、複雑で、エラーが発生しやすい一般的なRails機能をテストします。

[shoulda-matchers APIドキュメント](https://www.rubydoc.info/gems/shoulda-matchers/)

```ruby
group :test do
  gem 'shoulda-matchers'
end
```

## [rspec-sidekiq](https://github.com/philostler/rspec-sidekiq)

マッチャーとヘルパーのコレクションを介したSidekiqジョブの簡単なテスト

[rspec-sidekiq APIドキュメント](https://www.rubydoc.info/gems/rspec-sidekiq/)

```ruby
group :test do
  gem 'rspec-sidekiq'
end
```

## [timecop](https://github.com/travisjeffery/timecop)

「タイムトラベル」および「タイムフリーズ」機能を提供するgem。時間依存コードのテストが非常に簡単です。Time.now、Date.today、DateTime.nowを1回の呼び出しでモックする統一されたメソッドを提供します。

[timecop APIドキュメント](https://rubydoc.info/gems/timecop)

```ruby
group :test do
  gem "timecop"
end
```

## [test-prof](https://github.com/palkan/test-prof/)

TestProfは、テストスイートのパフォーマンスを分析するためのさまざまなツールのコレクションです。

[test-prof APIドキュメント](https://rubydoc.info/gems/test-prof)

```ruby
group :test do
  gem "test-prof"
end
```

## [rspec-retry](https://github.com/NoRedInk/rspec-retry)

失敗したテストを再実行する

[rspec-retry APIドキュメント](https://rubydoc.info/gems/rspec-retry)

```ruby
group :test do
  gem "rspec-retry"
end
```

## [pundit-matchers](https://github.com/chrisalley/pundit-matchers)

Pundit認証ポリシーをテストするためのRSpecマッチャーのセット

[pundit-matchers APIドキュメント](https://rubydoc.info/gems/pundit-matchers)

```ruby
group :test do
  gem 'pundit-matchers', '~> 1.6.0'
end
```