記憶の外付けHDD

切実に頭にUSBのコネクターがほしいです。なるべくtype-cでお願いしたいです。(忘れないように、プログラミング学習で学んだことを投稿してます)

2019/08/25

2019/08/25のバックアップ

概要

今日やったことは
railsアプリケーションに対してRSpecでテストを行う方法です。

コードがだんだんわかってきて、軽く興奮しているため、「Gemのインストール」とか、「フォルダの配置どうすんのか」といった導入まわりの話題はすっ飛ばします。(すいません)

RSpecについて

学んだ、RSpecでできるテストは以下のとおり

  • modelに対するテスト
    • DBにレコードが保存できるか確認する
    • つまり、modelで設定したvalidateやDBに設定した制約を確認
  • controllerに対するテスト
    • controllerの挙動を確認する。具体的には2種類
      • 1)controllerのアクションで設定したインスタンス変数は正しく作成できているか
      • 2)コントローラーのアクションから正しいビューを表示できるか

参考コード(構文理解篇)

RSpecの構文理解のため、簡単なテストを記載 。 とりあえず、これをしっかり理解したら、一気にわかるようになって、楽になりました。
rspecファイルは◯◯_rspec.rbと記載するそうです。

サンプル

sample_rspec.rb

RSpec.describe "足し算の確認" do
  it "1 + 1は2になること" do
    expect(1 + 1).to eq 2
  end
end

この中で一番重要なのは、expect( 1 + 1 ).to eq 2の部分。
テストをしているのは、この部分だから!

それ以外の部分は""内でこれからどんなテストをするか。ということを解説しているだけです。(ただし、構文上、必要な部分です)

解説

RSpec.describe "足し算の確認" do
  • 「これから、"足し算の確認"ってテスト記載します。RSpecで。」って宣言している(だけ)。
  • do書いてあるからendをちゃんとつける
it "1 + 1は2になること" do
  • 「"足し算の確認"のうち、これは"1+1は2になること"を確認するテストです。」って、宣言している(だけ)。
  • do書いてあるからendをちゃんとつける
expect(1 + 1).to eq 2
  • ここだけdoがないからendもいらない
  • expect(1 + 1).toテスト用の擬似処理する部分。
    • 今回は、「1に1を足す」という処理をしている。
  • eq 2の部分は、「1+1」の結果が、テストをパスする条件を記載している
    • 今回は、「結果が2(と等しい)」という条件
  • eqの部分は「マッチャ」と言われる部分
    • eq(〜に等しい)の他にも、include(〜を含んでいる)などがある。
    • プログラミングには珍しく、「東南アジアっぽい単語きた!」と思ったのですが、「macher」のことらしいです…

まとめ

RSpec、もっといろんな使い方がありますが、とりあえず基礎をしっかりしとかないと、頭の中に入らないタイプの人間なので、ハイパー基礎的なことをまとめてみました。
なにしろ、doとendをつけ忘れないようにして、立派なRSpecerになりたいです。