猫Railsスマートフォン用の表示で見る猫Railsねこー🐈2019-11-19Sendagaya.rbさんに初参加させていただきました!先日お仕事のために東京に引っ越したのですが、未だにベッドが届かず床に寝ています。引っ越し作業大変すぎて、仕事開始までに終わるか心配になってきました・・・。#295に参加させていただきました!ずっと田舎に引きこもっていて勉強会に参加させていただくのは久しぶりだったので緊張しましたー。流れとしてはこんな感じでした。軽い懇親会(のはずでしたがお店がギリギリ閉まってしまった)@s4naさんの技術的な相談をみんなで考えるRubyにはWebMockというHTTPリクエストをモックするgemがあるのですが、それがうまく機能しないという相談でした。モックしているはずなのにリクエストが飛んでしまう。url).to_return(response)いろんな意見が出しましたが、以下覚えている部分だけ箇条書きでー。モックするコードではなく、他の部分に問題がありそう特定の条件でモックがdisabledになってしまう可能性がありそう今回は外部APIへのリクエストではなく、localhostへのリクエストだった。調べてみるとそういうことではなかった何か見落としがありそう。サーバーがJSONでブラウザに情報を返すテストコードではCapybaraのvisitメソッドを使ってAPIにアクセスしている。APIにvisitでブラウザアクセスしていたのでモックできないということでしたー。この後もここから派生して色々な学びがありました。puffing-billyリクエスト情報をダンプするgemがあるよ。http-dumpコントローラーにTwitterAPIへのアクセス処理をベタ書きしてしまっている。これだとFatコントローラーなので、Twitterへのアクセス部分だけPOROに切り出すと良さそう外部APIへのアクセスは結構変更があったりするので、切り出しておくと修正しやすくなるモックが簡単になる。リクエストをモックするというより、リクエストの処理をインスタンスメソッドに閉じ込めて、そこを丸ごとモックするのが良さそうこの場合、POROはmodels配下に置く。libに置いたりgemにしたりする人もいる(けどちょっとやり過ぎかも)上記のインスタンスメソッドは、どうやって単体テストをすればよい?外部APIをテストすることになってしまうので、テストは結構難しい毎回リクエストするのはまずいし、VCRを使ってキャッシュしておくと実質的にはテストにならないリクエストの形式はテストできそう。した引数が渡っているか程度のテストでいいかなーあとテストとは別で外部APIの動作をチェックするCIを用意する、っていうのは可能。外部サイトの画面をスクレイピングして情報をとってくるような場合は、画面は変わりやすいのでチェックは必須になりそう。感想WebMockでモックできない件はあらためて考えてみると簡単なことなのですが、自分でPCを操作できない等の制約がある中で解決にまで至るのはなかなか大変でした。自分は見当違いなことを言ったり、そもそも問題を正しく理解できていなかったり、結構迷惑かけてしまいました。皆さんは1つずつ問題を切り分けたり、そもそもフレーム外の所に問題があるのでは?と気づいたりしていて、すごいなーと感心しっぱなしでした。いう流れで解決まで至るか、@tkawaさん、@fukajunさん、@sanfrecce_osakaさん達、強い人達の思考の過程を生で見れたのはめちゃ勉強になりました!あと今回は主催者の@tkawaさんと@fukajunさん以外、参加者の4人全員フィヨルドブートキャンプ生(卒業生含む)という奇跡が起きました✨自分はフルリモートでフィヨルドブートキャンプを卒業して、他の生徒さんと会うのは初めてだったので、なかなか緊張しました。3人とも優しい方だったので安心しました。@NMPさんとはお互い上京したばかりで、初勉強会参加ということで意気投合しました。主催者の@tkawaさんと@fukajunさんおふたりともとても優しい方で、本当リスペクトでした。Rubyコミュニティの方たちは、皆さん本当に優しいですよね。感動です✨あと会場のランチェスターさんが凄くきれいでした。12:24Sendagaya.rbさんに初参加させていただきました!Tweet広告を非表示にする関連記事2020-01-02よわよわRailsエンジニアのジレンマこんにちは。よわよわRailsエンジニア愛知代表のshitaです。プログラミングスクールの理想と現実。月別アーカイブ検索はてなブログをはじめよう!nekorailsさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。