2019/04/24
rspec
everyday rails をやっている。
describe
ではクラスやシステムの機能に関するアウトラインを記述しcontext
では特定の状態に関するアウトラインを記述するようにするbefore(:all)
はすべてのテストの前に一度だけ実行される。テスト時間を短くすることができるが、テスト全体の汚染につながるので使わない。テストデータのセットアップを
before do
で行うとき、インスタンス変数にアサインしなければならない。 そうしないとテストの中で変数を指定してデータにアクセスできない
開発者の中には入れ子になった describe ブロックで説明文の代わりにメソッド名を書くのが 好きな人もいます。 たとえば、私が search for first name, last name, or email と書いたラ ベルは #search になります。 個人的にはこう書くのは好きではありません。なぜならこのラベ ルはコードの振る舞いを定義するものであり、メソッドの名前を書く場所ではないと思うから です。
境界値テスト
もしパスワードのバリデーションが4文字以上10文字以下なら、4文字と10文字、そして3文字と11文字もテ ストするのが良いテストケースです。
simplecobでどうやってカバレッジ測ってるの
simplecovでRspecのテストを書くが楽しくなった話 - Qiita
- 行ごとにカバレッジ見てくれてるみたいだけど、何で判断してるの?書いてるつもりのバリデーションが入ってない〜〜〜
コードカバレッジ視点で、Rubyでテストを書くときに気をつけること - Qiita
- simpleCovは完璧なわけでない。C0(命令網羅)のみ。
- 後置ifや三項演算子を見逃す。あくまで一つの指標
- 書籍
Ruby on Rails 5の上手な使い方 現場のエンジニアが教えるRailsアプリケーション開発の〜
に記載があるぽい
カバレッジ指標
- C0 命令網羅:実行された行の割合
- C1 分岐網羅:実行された判定条件の割合
C2 条件網羅:新都議の両方取るように実行された条件の割合
SimpleCovのカバレッジ(網羅率) - Qiita これの意味がわかるようになりたい
Rails: テスティングアンチパターン –前編(翻訳)
- よむぞ!
werckerとか、CIとか
RSpecのカバレッジ率を計測して、CIでエラーにする - もふもふ技術部
rubocop, lintのこと
rubocopを導入してコードを直していくフロー | shimar's blog
- いれてみた。
- 自分がこの前作ったコードにあててみた。
- 大丈夫感
RuboCopをRailsオプションやLintオプションで使ってみよう - Sider Blog
HoundCIはPull Request 毎に超吠える(Rubyのコーディング規約CIツール) - Sider Blog
- houndはrbocopをもとに吠えてくれてたんだな。理解。
したもよむ - rubocopの導入 - Qiita - HoundCIはPull Request 毎に超吠える(Rubyのコーディング規約CIツール) - Sider Blog
ただし、レビューする内容はコーディング規約ではありません。HoundCIはバックエンドにRubocopを使ってますが、 SideCIではBrakemanやrails_best_practices、bundlerなどを利用しています。コーディング規約のチェックは行わず、 セキュリティホールやバグを含んだライブラリの検出、バグの温床になりそうなコードの書き方を発見してレビュー(コメント)します。 - ふむ
gitの運用フローあらためて
マージとコンフリクトでしぬのであった
(ブランチ名 +|MERGING)
って出たらどうすりゃいいねん。- gitのマージとコンフリクトを理解する - Qiita
- 3wayまーじとは
GithubでのWeb上からのマージの仕方3種とその使いどころ - Qiita
git pull origin branch
したらこうなった
error: You have not concluded your merge (MERGE_HEAD exists). hint: Please, commit your changes before merging. fatal: Exiting because of unfinished merge.
gyazo.com - はい、コミットしてなかっただけ!!!!!!