LoginSignup
2
1

More than 3 years have passed since last update.

Rspecコマンドが面倒だからRakeコマンド一発でRspecが実行できるようにしてみました

Last updated at Posted at 2021-01-19

元々の状況・課題

Rubyでチケット料金モデリングに挑戦中。
Rspecでテストを書いているが、ターミナルに毎回Rspecコマンドを入力するのが面倒になった。

目的

Rspecを簡単に実行したい。

やったこと・結果

Rakeというライブラリを使った。
②ターミナルにrakeコマンドを入力するだけで、全てのspecファイルが一括で実行できるようになった。
③楽になりました。

Rakeとは(ざっくり)

Rakefileに実行したいことを書いて、Rakefileに書いた内容をrakeコマンドで簡単に実行できる。
ターミナルに長々とコマンドを打たなくても良くなる。

ディレクトリ構成は、ざっくりですがこんな感じです。

├── lib
│   ├── user.rb
│   └── ticket.rb
│
├── spec
│   ├── user_spec.rb
│   └── ticket_spec.rb
│
│── Rakefile ※手順2で作成します。

やったことの手順

1. rakeのインストール

gem install rake

2. Rakefileを作成し、Rakefileにコードを書く。

Rakefile
 require "rspec/core/rake_task"

##これでrakeコマンドのみで,③が実行できる。
 task :default => :spec

##rakeコマンドを実行した際に、rspecディレクトリ配下のファイルを自動でテストファイルとして認識し、テストを実行する。
 RSpec::Core::RakeTask.new(:spec) 

(補足説明)
こちらにspecディレクトリ配下のファイルを指定している旨のコードがあります。
・③について、こちらの記事が勉強になりました。

「::」は、「クラス」や「モジュール」や「メソッド」の呼出しです。
または「::」は、名前解決をする際に入れ子(ネスト)環境下での場所を特定します。
単純に言うと、場所を特定します。(概念を分かりやすく説明するのは難しいです)
「RSpec」クラスを呼び出す場合 → RSpec
「RSpec」クラスの中の「Core」クラス or モジュール or メソッドを呼び出す場合 → RSpec::Core
「RSpec」モジュールの中の「Core」モジュールの中の「RakeTask」モジュールを呼び出す場合 → RSpec::Core::RakeTask

3. rakeコマンドの実行

ターミナルで、rakeコマンドを実行すると、specディレクトリ配下の**_spec.rbが一括で実行されます。

rake

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1