マガジンのカバー画像

アウトプット

9
学習毎に行なっていたアウトプットを発信に転用。 日々のプログラミング学習で学んだことを、言語化。
運営しているクリエイター

記事一覧

[output] 多対多 の DB設計

[output] 多対多 の DB設計

多対多の関係をもつテーブルがある場合、カラムに問題が生じる。

お互いに相手テーブルのidを複数持っているが、1つのカラムに複数の値を入れられない。
かといってidごとにカラムを増やしてしまうと、レコードによっては不要なカラムが生じてしまう。

それを解決する方法として、中間テーブルの活用がある。

中間テーブルとは、2つのテーブル間にあるテーブルのこと。
2つのテーブルの組み合わせパターンだけを

もっとみる
[output]サポートモジュール

[output]サポートモジュール

結合テストでは、「ログインする」というステップを何度も記述した。
テストコードにおいても、繰り返し行う処理をメソッドとして切り離せる。
RSpecでは、サポートモジュールというものを利用して行う。

方法は、specディレクトリ以下にsupportディレクトリを作成。
そこに、.rbファイルを配置。
モジュール名とファイル名は同じにし、名前で何をしているかわかるようにする。

■spec
 ■su

もっとみる
[output]Rspec結合テスト

[output]Rspec結合テスト

●System Spec結合テストは、System Specを用いて記述する。
記述には、カピバラというGemが必要だが、Railsが標準搭載している。
#Gemfilegroup :test do 略 gem 'capybara', '>= 2.15'略end``

そのため、導入処理不要。

ファイル生成は、bundle exec rspec:systemコマンドを実行する。
生成するファイ

もっとみる
[output]コントローラー単体テスト

[output]コントローラー単体テスト

コントローラーの単体テストについて。

コントローラーのテストは、リクエストに対して想定したレスポンスが生成されるか確認する。

例えば、レスポンスの情報を使って、
・正常にレスポンスが返ってきたかをHTTPステータスコードで
・そのページに表示されるはずの情報が存在するかをbodyの情報で
確認する。

詳細は、後ほど。
まずは、コントローラーのテストファイルの作成から。

これには、rails

もっとみる
[output]モデル単体テスト

[output]モデル単体テスト

モデル単体テストは、バリデーション及びメソッドの検証。

異常系テストにおいては、
presence: trueというバリデーションがあるなら、
カラムを空にして、エラーメッセージを検証する、と
バリデーションを参考にイグザンプルを組み立てやすい。

対し、正常系テストは、
アプリの仕様・動作の流れも参考にして、組み立てる必要がある。
例えばユーザー登録というdescribeならば、
「○○と△△

もっとみる
[output] FactoryBot と Faker

[output] FactoryBot と Faker

●FactoryBotRspecでテストを行うにあたり、
テスト毎にインスタンスを生成するのは
非効率かつ、可読性が落ちる。

そのためFactoryBotというGemを使用し、
テストで使用するインスタンスをあらかじめ設定しておく。

導入方法は、まずGemfileに下記を記述。

group :development, :test do # Call 'byebug' anywhere in

もっとみる
[Rspec/テストコード]今日の学習アウトプット!

[Rspec/テストコード]今日の学習アウトプット!

テストコードとは、アプリケーションの動作確認をするために書くコード。
品質の担保のために重要な工程。

また、どんなテストが必要か把握するには、アプリの仕様への理解が必要。
逆言うと、テストコード記述は理解を深めるのを助ける。

理解を深めるにあたって、ポイントは3つ。
・細かい記法は、使用する際に調べれば良い
・それより、ここで何を確認したいのかを理解する
・挙動で気になる点があれば、処理を止め

もっとみる
[Git/GitHub2]今日の学習アウトプット!

[Git/GitHub2]今日の学習アウトプット!

GitHub Desktop操作の整理
publish repository:リモートリポジトリ作成+push(commitの反映)
push origin:ローカルの変更をリモートに反映
publish branch:トピックブランチの作成+push
pull request:commit履歴を残す+コメント機能
リ:merge pull request→Confirm merge:リモートのm

もっとみる
[Git/GitHub]今日の学習アウトプット!

[Git/GitHub]今日の学習アウトプット!

Gitはバージョン管理システム。
いつ、誰か、どこを、編集したのか時系列で管理できる。
履歴の確認や、バージョン戻しも容易。

GitHubは、Gitを使ったWebサービス。
複数人での開発を容易にしてくれる。

GitHub Desktopは、GitHubが提供するデスクトップ用のアプリ。
GUIで、操作しやすく、より開発を容易にしてくれる。

Gitを使うには、まずリポジトリを作成する。
これ

もっとみる