SlideShare a Scribd company logo
1 of 38
Download to read offline
RSpec
あなたならどう書く?
20190626 gotanda.rb #37
お前誰よ?
自己紹介
•菅野 幸助
• バックエンドエンジニア

(Rails歴3年くらい)
• Linc wellという医療スタートアップで
Rails触ってます。
• 個人では最近Apollo + Typescriptなど
• Twitter: @saiid_kk
• Github: saiidalhalawi
• note: https://note.mu/saiid114
お仕事
https://jp.techcrunch.com/2019/05/27/linc-well-fundraising/
ここから本題
• Rspecでテストを書いていて「動くけど、本当にこれでい
いんだろうか・・・」と、思うことありませんか?
• レビューもCIもパスするし、問題がある訳ではないけ
ど・・・
• どうにもしっくりこない時がけっこうある 

-> 他の人がどう書いてるのか気になる
• 色々な流儀や考え方を知りたい
テストのモヤモヤ
そこで、アンケートを
とりたいと思います
•「いつもこう書いてる」
•「規模やチームによる」
•「こっちの方が好き」
•「これ以外ありえない!」
•・・・etc
色々あると思いますが、

思い思いの判断基準でご回答ください。
題して
RSpec、あなたならどう書く?
第1問
Request Spec は . . .
1. Actionごとに分ける 2. Controllerごとに分ける
第2問
System Spec は . . .
1. 重いので大事なとこだけ 2. なるべく多くのケース書きたい
第3問
SharedExamples は . . .
1. やり過ぎると逆に読みにくいので

あまり使わない
2. DRY!DRY! 積極的に使う
第4問
before/after(:all) は . . .
1. 便利だから使う時もある 2. Rubocopで禁止
https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeforeAfterAll
第5問
RSpec/NestedGroupsは . . .
1. 構造化させたいので許可 2. Rubocopで禁止
第6問
テストデータの定義は . . .
1. 呼び出し元でつくる 2. 呼び出し先でつくっておく
第7問
時間は . . .
1. 止める 2. つくる
第8問
テストの説明は . . .
1. 日本語 2. 英語
第9問
複雑な事前データは . . .
1. beforeでまとめて派 2. letで組み上げる派
第10問
it スコープ内は . . .
1. 絶対に汚したくない! 2. ある程度柔軟に
以上で終わりです
• Request Specは ・・・ Actionごと
• System Specは・・・大事なとこだけ
• SharedExamplesは・・・あまり使わない
• before/after(:all)は・・・禁止
• NestedGroups・・・使う
• テストデータの定義は・・・呼び出し元でつくる
• 時間は・・・つくる
• テストの説明は・・・英語 (背伸び)
• 複雑な事前データは・・・letで組み上げる
• itスコープ内は・・・絶対汚したくない!
私の場合
回答を見ていると

なんとなく人となりが
見えてきますね(!?)
‘’ Tell me how you write RSpec tests,
I'll tell you who you are. ’’
皆さんは

どうだったでしょうか?
• Request Specは ・・・ Controllerごと
• System Specは・・・大事なとこだけ
• SharedExamplesは・・・積極的に使う
• before/after(:all)は・・・
• NestedGroups・・・使う
• テストデータの定義は・・・呼び出し先(Factory)でつく
る
• 時間は・・・つくる
• テストの説明は・・・日本語
• 複雑な事前データは・・・letで組み上げる
• itスコープ内は・・・ある程度柔軟に
当日のアジャイル集計結果(目視)
やや優勢
やや優勢
ややこっち
優勢
やや優勢
優勢
やや優勢
圧倒的優勢
やや優勢
勝敗つかず(ケースによる)
他にも「この2択は?」
というものがあれば

是非知りたいです
WE ARE HIRING !! 的な
https://www.wantedly.com/projects/324351
ありがとうございました
m(_ _)m

More Related Content

What's hot

Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo!デベロッパーネットワーク
 

What's hot (20)

Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
 
新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術
 
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
 
リクルートライフスタイル流!分析基盤との賢い付き合い方
リクルートライフスタイル流!分析基盤との賢い付き合い方リクルートライフスタイル流!分析基盤との賢い付き合い方
リクルートライフスタイル流!分析基盤との賢い付き合い方
 
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkanフロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
 
Power Query Online
Power Query OnlinePower Query Online
Power Query Online
 
第5回oss運用管理勉強会 zabbix徹底活用術の紹介
第5回oss運用管理勉強会 zabbix徹底活用術の紹介第5回oss運用管理勉強会 zabbix徹底活用術の紹介
第5回oss運用管理勉強会 zabbix徹底活用術の紹介
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
 
LibreOffice API について
LibreOffice API についてLibreOffice API について
LibreOffice API について
 
エンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなしエンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなし
 
個人研究 スポーツ産業と地域活性化 
個人研究 スポーツ産業と地域活性化 個人研究 スポーツ産業と地域活性化 
個人研究 スポーツ産業と地域活性化 
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについて
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
 
WebGISをはじめてみる
WebGISをはじめてみるWebGISをはじめてみる
WebGISをはじめてみる
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
2)AIを活用したウェルビーイングを測定
2)AIを活用したウェルビーイングを測定2)AIを活用したウェルビーイングを測定
2)AIを活用したウェルビーイングを測定
 
Spring tools4
Spring tools4Spring tools4
Spring tools4
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 

Similar to Rspec、あなたならどう書く? 20190626

プロジェクトでRubocopを使って自動コードレビューしてみた話
プロジェクトでRubocopを使って自動コードレビューしてみた話プロジェクトでRubocopを使って自動コードレビューしてみた話
プロジェクトでRubocopを使って自動コードレビューしてみた話
Cake YOSHIDA
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Hitoshi Asai
 
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
wpscala
 

Similar to Rspec、あなたならどう書く? 20190626 (20)

Ruby StyleStatsの紹介
Ruby StyleStatsの紹介Ruby StyleStatsの紹介
Ruby StyleStatsの紹介
 
ENGINEER WORK!!
ENGINEER WORK!!ENGINEER WORK!!
ENGINEER WORK!!
 
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュ
 
20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror20100619 wakhok important_of_io_with_jror
20100619 wakhok important_of_io_with_jror
 
Agile japan2012 agilesamurai_shinjuku
Agile japan2012 agilesamurai_shinjukuAgile japan2012 agilesamurai_shinjuku
Agile japan2012 agilesamurai_shinjuku
 
WACATE2018Summer BPP yoshitake
WACATE2018Summer BPP yoshitakeWACATE2018Summer BPP yoshitake
WACATE2018Summer BPP yoshitake
 
プロジェクトでRubocopを使って自動コードレビューしてみた話
プロジェクトでRubocopを使って自動コードレビューしてみた話プロジェクトでRubocopを使って自動コードレビューしてみた話
プロジェクトでRubocopを使って自動コードレビューしてみた話
 
LINEスタンプの作り方
LINEスタンプの作り方LINEスタンプの作り方
LINEスタンプの作り方
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係
 
Rでを作る
Rでを作るRでを作る
Rでを作る
 
お前”だれ”やねん? -2012年度社内向け年次活動報告-
お前”だれ”やねん? -2012年度社内向け年次活動報告-お前”だれ”やねん? -2012年度社内向け年次活動報告-
お前”だれ”やねん? -2012年度社内向け年次活動報告-
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
 
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
 
技術系同人誌を書こう #ssmjp
技術系同人誌を書こう #ssmjp技術系同人誌を書こう #ssmjp
技術系同人誌を書こう #ssmjp
 
Eightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組みEightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組み
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
プロジェクトマネジメントと開発を両立したい!
プロジェクトマネジメントと開発を両立したい!プロジェクトマネジメントと開発を両立したい!
プロジェクトマネジメントと開発を両立したい!
 
Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタート
 
人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム
 
チーム開発積み重ね Rails Developers Meetup 2018 Day2
チーム開発積み重ね Rails Developers Meetup 2018 Day2チーム開発積み重ね Rails Developers Meetup 2018 Day2
チーム開発積み重ね Rails Developers Meetup 2018 Day2
 

Rspec、あなたならどう書く? 20190626