自分用のアウトプット。
結合テストコードで、ターミナルでRubyファイルを実行する時にエラーになってたんだけど、メンターさんに質問したらすぐに解決できました。
カリキュラム通りに記述してるのになーとか思ってたのに、普通にCSSの記述が間違ってた。
overflow: scroll; って書くべきところのscroll;が書いてなかった。
エラー文を見れば確かにoverflowって書いてあるんだけど、見当違いなファイルを探してました。
メンターさんありがとう。
rescueを用いたRakeタスクを実装
fins_eachメソッドは、利用するモデルに紐づくテーブルの全てのレコードに対して、eachと同じような繰り返し処理を行う。
save! create! destroy! などのように、「!」をつけると意図的に例外を発生させられる。
raise
例外を発生させることができる文法。
第一引数に発生させたい例外クラス、第二引数にエラーメッセージを記述する。
トランザクション
レコードの更新を行う複数の処理を一つにまとめて行うこと。
「処理の一部は成功したけど、一部は失敗した」という事象が発生しない。(全ての処理が成功または失敗)
例)「料金の支払いは完了したのに購入処理ができておらず、商品が届かない」
「料金の支払い処理がされていないのに購入できてしまった」といったことを防ぐ。
結合テストコードの方。
click_onメソッド
引数に文字列を取り、一致するテキストなどを持った要素をクリックできる。
ログイン処理をまとめるためには、spec/support/sign_in_support.rbというディレクトリとファイルを作り、その中に処理を記述。
spec/rails_helper.rbの
Dir.[Rails.root.join(‘spec’, ‘support’, ‘**’, ‘*.rb’)〜〜〜のコメントアウトを外し、
config.include SignInSupportという記述を追加。
Rails.root.join(‘public/images/test_image.png’)という記述は
“Users/ユーザー名/projects/chat-app/public/images/test_image.png”ということになる。
attach_fileメソッド
タイプがfileのinput要素に、投稿テスト用に使う画像を仕込む(アタッチ)
fixture_file_uploadメソッドも似ているが、こちらはインスタンスに画像ファイルをセットするもの。
creat_list
messagesテーブルのレコードをまとめて生成する。
オブジェクト指向について(途中)
どのようなクラスを用意すべきかというのを考える場合、
どのような処理が存在するか、ということに着目をする。
なんでもかんでも1つのクラスにまとめてしまうと、他者が見た時に作成の意図が分からないコードになってしまう。
単一責任の原則
1つのクラスは1つの振る舞いしか持たない、という原則。
self
selfが書かれているインスタンスメソッドを適用したインスタンス自身が代入されている変数。
ゲッター
クラスに設定したインスタンス変数の値をインスタンスから読み取って表示するためだけに定義するメソッド。
セッター
あるインスタンスがインスタンス変数の値を更新するためだけのメソッド。
def インスタンス変数= と記述する。(名前に=が含まれている)
この場合、=の前後にはどれだけ半角スペースが含まれていてもよい。
むっずい!
テストコード自体の書き方は大体分かってきたけど、そこまでのFactoryBotとかの準備がまだ曖昧。
あと課題図書の方内容むずい…!
selfとか、以前にも出てきてたはずなんだけど全然理解できてないなーと気づいた。
今日も頑張ります。