第92回 2024/1/28(日) ## 進め方 https://hackmd.io/i-8Lzl_gRDWEQvMdlOO-Mw?both ## 前回のHackMD https://hackmd.io/sPijhGleRM-h7ZxkDlygXQ ## ファシリ/ドライバー - ファシリ: - ドライバー: ## 前回のPR ## 今回のPR ## 読んだところ ### From p520 ### To ## 練習問題 1. テストの目的 - 提供サービスの品質を一定のレベルで維持するため - コード変更の際に意図しないエラーが発生しないようにするため 2. テストディレクトリの構成とそれぞれの役割、およびフィクスチャファイルの役割についての説明 - テストディレクトリの構成 - test/配下にモデル、コントローラー、ヘルパー、フィクスチャなど - テストディレクトリの役割 - ディクトリ名がテスト対象の名前。 - フィクスチャファイルの役割 - テストのために使用するデータを登録するファイル、 3. フィクスチャファイルとseedsデータの違い - フィクチャファイル:テスト用。DBに入らない(?)のでDBバリデーションの影響を受けない - seeds:初期データ登録用に使う(バリデーションの影響を受ける) - DBに入る/入らない、というあたりが謎 4. テストの種類と役割 - モデル単体テスト: モデル単体でのテスト - 機能テスト: アクション機能の動作をテスト(HTTPリクエストを通すような動作)。コントローラーテストと大体同じ? - システムテスト: E2Eでユーザーインターフェース操作を通した一連の動きがちゃんと機能しているかのテスト。 5. テストコードの記述方法、テストの実行ルールについて - 記述方法: `test 'テスト名' do end`で、ブロック内にテストコードを記述する - 実行方法: コマンドで`rails test test/models`とすると、`test/models`配下に置いたテストコードが実行される 6. setup/teardownメソッドの役割について - 各テストの実行前や実行後に呼び出したい処理を指定する ## 学んだこと(分かったこと/わからなかったこと - @sugiwe - フィクスチャファイルとseedsデータの違いは、まずはバリデーションの影響を受けるか否かというところ。seedsはDBに入るとして、フィクチャファイルは「DBに入らない」のか「一時的に入るけど消える」なのかちょっとわからなかった… - 現在時刻などを取得する場合は、まずconfig/application.rbでタイムゾーンを取得し、`Time.now`で基本表示はできて、細かく表示をコントロールしたい場合は`strftime`メソッドを使う - @shodan - fixturesは一時的にでもDBに登録されるのか?というところがふわっとしているなと思った(しっかりとはわからなかった)。 - fixturesは作成時にバリデーションの影響を受けない。 - `Time#strftime`で使える表示形式のフォーマットはめちゃくちゃある。 https://docs.ruby-lang.org/ja/latest/method/Time/i/strftime.html ## 感想(輪読会自体の改善点などあれば) - @sugiwe - 練習問題から始まると前回の振り返りができて良い - あと一問…!!! - そういえばJS Primer用のスレッドとか作らないと - @shodan - フィナーレに立ち会えるかと思ったらまだまだだった。次のテストの確認問題が難しそう。 - 参加できるかはわからないですがJS Primer輪読会のスタートにワクワク。