NodataProgramming’s diary

プログラミング初心者のアウトプット広場

プログラミング初心者あるある〜注意するべきこと〜

プログラミングを初めて、3ヶ月ほど経ち自分の弱点を見つけたので今回は自己啓発も兼ねてプログラミング初心者あるあるという事でご紹介したいと思います。

プログラミング初心者あるある

読み間違え綴り間違え

先日も、読み間違えと綴り間違えを指定てrubyでエラーを出ました。

量の多いコードの中から間違えを見つけるのは、お母さんの手伝いで針に糸を通すようにもいかず、なかなか骨の折れる作業です。

どんな読み間違えと綴り間違えをしたかと言うと、本来

FactoryBot(ファクトリーボット)

と入力する所を

FactoryBoy(ファクトリーボーイ)

と入力していました。

これがまた自分のノートを見ている物だから、SyntaxErrorの原因が見つかりません。

僕は宇宙の彼方で目的の星を探しているのに、一生懸命衛星を追いかけていたわけです。ただ、コードの記述練習に、手打ちをしてみると意外な発見もあります。

『ここに半角スペースがないと動かないんだ』とか『意外と手打ちでも英語の綴りを覚えられるな』とか。

効率的に悪いと思われるでしょうが、失敗を知っているからこそ解決に導けるプロフェッショナルになれると僕は信じています。

 

※1以下より唐突なアウトプットになります。不慣れなアウトプットなので見苦しい点もありますが、今後の改善の為アドバイスなどいただけると幸いです。

※2gemの導入方法については省略しています。機能的な内容を記述しています。

FactoryBotについて

FactoryBotはGemの1つで、テストコードの入力を効率よくする為に使われます。

(FactoryBotは専用のフォルダとファイルを生成します)

例えば、ユーザー情報に対する、テストを行うとします。

FactoryBotを使用しないでテストコードを書くと使用した場合では、文字・行数にかなりの差があります。

FactoryBotを使用しない場合

Nicknameがからの状態でユーザー登録ができるかどうかテストするコードには、

省略

use = User.new(Nickname"" , Email"testtaro@com", Password"123456", Password_comfirmation"Password")

省略

 Emailがからの状態で登録できるかテストで

省略

use = User.new(Nickname"TestTaro" , Email"", Password"123456", Password_comfirmation"Password")

省略

のようにテスト毎に、ユーザー情報に関する記述が必要になります。

これをFactoryBotを導入して別フォルダ/ファイルにユーザー情報を記述しておく事で、短いコードかつ2行の記述で済みます。

FactoryBotのファイルを生成

 

FactoryBot.befine do

  FactoryBot :user do

     nickname                           {"TestTaro"}

     email                                   {"testtaro@com"}

     password                            {"123456"}

     password_comfirmation   {"Pasword"}

   end

end

例えば先ほどのNameがからの状態でユーザー登録ができるか確認するテストコードでは

省略

user = FactoryBot.build(:user)

Nickname = ""

省略

 でテストコードの入力が完了する。

 

更に、Fakar と before を併用する事で上質且つ高度なテストコードへと昇華させる事ができる。

 

Faker は各ユーザー情報にランダムの値をいれる事ができる。

同じNicknameやEmailが存在した場合のエラーについてもテストをしてれるので、テストコードには必ず導入するべきgemである。

先ほどのFactoryBotで記述したコードを書き直すだけ。

FactoryBot.befine do

  FactoryBot :user do

     nickname                           {Faker: :name.initialse(number: 2)}  #number:2は2文字で表すように

     email                                   {Faker: :Internet.free-email}

     password                            {Faker: :Internet.password(min_length: 6)}  #min_lengthで6文字以下にできない制限

     password_comfirmation   {"pasword"}

   end

end

 

 

before はテストコード実行前に@〇〇のようにインスタンス変数としてセットアップ(準備)する事で、短い記述でコードを呼び出す事ができる。

例)テストコード上部に

before do

@user = FactoryBot.build(:user)

end

をセットアップすると

Nicknameがからの状態で登録できるかテストする場合に

省略

@user.Nickname = ""

省略

のみになる。

テストコードは、初心者がまず受け持つ仕事に多いのできちんと理解しておきたい内容である。