記事一覧
RSpec.describe と describe
●解決したいこと①と②は、どんな違いがあるのか。 また、どう使い分けるのか、疑問に思った。 require 'rails_helper' #binding .pryRSpec.describe "外枠describe", typ…
[output]Rspec結合テスト
●System Spec結合テストは、System Specを用いて記述する。 記述には、カピバラというGemが必要だが、Railsが標準搭載している。 #Gemfilegroup :test do 略 gem 'capyba…
「ビジネスモデルとは」を、言葉にできるか
ビジネスモデル・ジェネレーション
さて、
この本は、何について書かれてるのか?、と
導入部分を読んでいると、
と書かれていた。
ビジネスモデルについて書かれているようだ。
そもそも「ビジネスモデル」とは何か?
ちょっと検索してみた結果、一言でまとめると
「事業が収益を上げる仕組み」だと解釈した。
しかし、
ページをめくっていくと、こんな定義が書かれていた。
この定義を見て、ビジネスモデ
アウトプットを習慣に・その2
前回対策を挙げたが、続かずに投稿が空いてしまった。
原因と対策を考えた。
原因・学習フェーズが代わり、実装が多くなった
・実装の方が楽しく、そちらに注力した
・note投稿用に、メモを編集する作業が面倒だった
・詳細が気になることが多くなり、調査・考察・質問の回数が増えた
・その結果、一時的に進捗が計画と同じペースまで落ち、投稿の時間を確保しないようになった
・できてないときほど、「やらな
コメントアウトが無効な記述
●コメントアウトされているのに、なぜ動く?app/assets/stylesheets/application.css
/** This is a manifest file that'll be compiled into application.css, which will include all the files* listed below.** Any CSS and SCSS fi
[output]サポートモジュール
結合テストでは、「ログインする」というステップを何度も記述した。
テストコードにおいても、繰り返し行う処理をメソッドとして切り離せる。
RSpecでは、サポートモジュールというものを利用して行う。
方法は、specディレクトリ以下にsupportディレクトリを作成。
そこに、.rbファイルを配置。
モジュール名とファイル名は同じにし、名前で何をしているかわかるようにする。
■spec
■su
[output]Rspec結合テスト
●System Spec結合テストは、System Specを用いて記述する。
記述には、カピバラというGemが必要だが、Railsが標準搭載している。
#Gemfilegroup :test do 略 gem 'capybara', '>= 2.15'略end``
そのため、導入処理不要。
ファイル生成は、bundle exec rspec:systemコマンドを実行する。
生成するファイ
[output]コントローラー単体テスト
コントローラーの単体テストについて。
コントローラーのテストは、リクエストに対して想定したレスポンスが生成されるか確認する。
例えば、レスポンスの情報を使って、
・正常にレスポンスが返ってきたかをHTTPステータスコードで
・そのページに表示されるはずの情報が存在するかをbodyの情報で
確認する。
詳細は、後ほど。
まずは、コントローラーのテストファイルの作成から。
これには、rails
[output]モデル単体テスト
モデル単体テストは、バリデーション及びメソッドの検証。
異常系テストにおいては、
presence: trueというバリデーションがあるなら、
カラムを空にして、エラーメッセージを検証する、と
バリデーションを参考にイグザンプルを組み立てやすい。
対し、正常系テストは、
アプリの仕様・動作の流れも参考にして、組み立てる必要がある。
例えばユーザー登録というdescribeならば、
「○○と△△
[output] FactoryBot と Faker
●FactoryBotRspecでテストを行うにあたり、
テスト毎にインスタンスを生成するのは
非効率かつ、可読性が落ちる。
そのためFactoryBotというGemを使用し、
テストで使用するインスタンスをあらかじめ設定しておく。
導入方法は、まずGemfileに下記を記述。
group :development, :test do # Call 'byebug' anywhere in
Git/GitHub
●リモートリポジトリでのトピックブランチ削除が、
ローカルリポジトリには反映されないがなぜか。・仮説リモートレポジトリでmerge後、トピックブランチを削除。
その後、ローカルでpull作業をした直後。
ローカルリポジトリのBranchタブでは、
リモートで削除したトピックブランチを選択可能。
ただし、DELETEが選べる。
pull = fech + merge
fech = リモートリポジト