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の運用フローあらためて

マージとコンフリクトでしぬのであった

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 - はい、コミットしてなかっただけ!!!!!!

Webページ速度改善ガイド