この章の主な流れ
group :development, :test do
gem 'rspec-rails' #開発とテスト環境だけのインストール
end
bundle install
rspec-railsがやってくれること
config/database.yml ファイルの中身
test:
<<: *default
database: db/test.sqlite3
#MySQL や PostgreSQL を使っている場合
test:
<<: *default
database: projects_test
コードが見つからない場合はconfig/database.ymlに上記の記載を行いrake タスクを実行して接続可能なデータベースを作成を行う
bin/rails db:create:all
rake タスクってなに?
Rackは、RubyのWebアプリケーションに対して、モジュール化された最小限のインターフェイスを提供して、インターフェイスを広範囲に使えるようにします。RackはHTTPリクエストとレスポンスを可能なかぎり簡単な方法でラッピングすることで、Webサーバー、Webフレームワーク、その間に位置するソフトウェア(ミドルウェアと呼ばれています)のAPIを1つのメソッド呼び出しの形にまとめます。
Railsで定期的に実行したい処理をRubyコードでタスクとして定義しておき、必要なときに呼び出して実行することができる機能
特徴としてアプリケーションを起動せずにターミナル上で実行でき、サーバを起動せずに定義した処理を実行できる
バックラウンドでタスクの実行にはwheneverというgemを使用する。
db:create:allコマンド
database.ymlに定義してあるデータベースを全て作成
qiitaより
逆にすべての環境のDPを削除したい時
rake db:drop:all
Rspecファイル群のインストール
bin/rails generate rspec:install
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
生成されるファイル
.rspec
設定ファイル
--format documentation
–format documentation
テスト結果の出力を変える
#format documentation記載なし
.....
Finished in 0.40011 seconds (files took 4.53 seconds to load)
5 examples, 0 failures
#format documentation記載あり
Post
バリデーションの確認
titalカラム
タイトルが空または3文字以内の場合postが作成されないこと
タイトルが30文字以上の場合はpostが作成されないこと
日付に関するバリデーション
開始日が今日より過去の場合postが作成されないこと
終了日が開始日より過去の場合postが作成されない事
memoカラム
メモが30文字以上の場合はpostが作成されないこと
Finished in 0.25123 seconds (files took 2 seconds to load)
5 examples, 0 failures
どのテストで??どこのテストが通ったのかがわかりやすい
spec_helper.rb、rails_helper.rb
テストで使用する設定ファイルの記載を行う場所
インストールができている場合
bundle exec rspec
No examples found.
Finished in 0.00047 seconds (files took 0.11704 seconds to load)
0 examples, 0 failures
binstubを使ってコマンドを短くすることができる。
何かしらのRailsアプリケーションを実行するときはbundleを使用が必須であり実行コマンドがどうしても長くなってしまうRspecの場合はbudle exec rpsecになる
少しでもコマンドを短くする方法としてbinstubコマンドを使用する。
インストール後、RubyGems は実行可能ファイルと共に以下のものを用意してくれる
bundle binstubs rspec-core
コマンド実行後
↓↓↓↓
#コマンド実行可能
bin/rspec
#binディレクトリー内にrsepcの実行ファイルが生成される。
bin/
├── bundle
├── importmap
├── rails
├── rake
├── rspec #作成される
└── setup
Rspecを導入済みなのでジェネレーターのコマンドを使用してもminitestのファイルは作成されない代わりに、Rspecのファイルがspecディレクトリーに作成されて不必要なファイルも作成されてしまうここでは最初から作られないようにどのファイルを作成しないかを決めることができる。
falseを記載すれば作られない
config/application.rb
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 7.0
config.generators do |g|
g.test_framework :rspec,
fixtures: false,
view_specs: false,
end
end
テスト以外のファイルについて
ヘルパー、jsなどいらないファイル名の記載することがで
作成をスキップすることができる。
config.generators do |g|
g.stylesheets false
g.javascripts false
g.helper false
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing