質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

577閲覧

rspecの思想について

tqkqt0

総合スコア155

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2017/12/27 02:57

rspec
itの結果について、expectは一つのほうがいいですか?
itの中に15個くらいexpectを書いてるテストを見ました。
1it 1expect がいいなどRSpecの思想をご存知の方ご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

理想的には一つのexample(一つのit)につき、一つのエクスペクテーション(expect)です。
が、実際にやってみるとわかると思いますが、これを厳密に守ろうとすると結構大変です。
なので、僕は理想は理想として理解しつつ、ある程度手抜きすることも許容する、というスタイルでやっています。

コード例はRSpecではなくMinitestですが、こちらの記事に書いた内容が参考になるかなと思います。

テストメソッドの粒度について - Qiita

また、この記事も比較的近いテーマを扱っています。

サヨナラBetter Specs!? 雑で気楽なRSpecのススメ - Qiita

さらに、RSpec 3.3から導入されたaggregate_failuresを使うと、example内に複数のエクスペクテーションを書いたときも途中で止まらずに最後までエクスペクテーションを実行することができます。

実用的な新機能が盛りだくさん!RSpec 3.3 完全ガイド - Qiita

RSpecに限らず、何かしらの原則を厳密に守ろうとするとやたらと工数がかかったり、むりやりなハックを繰り出すことになったり、何かと本末転倒なことが起きがちです。
なので、以下のようなプロセスで「原則を守るか、破るか」を判断するのがいいと思います。

  • なぜその原則があるのか。原則を守るとどういうメリットがあるのか、守らないとどういうデメリットがあるのかを理解する。
  • 最初はできるところまで原則を守ろうとしてみる。
  • 原則を守ろうとした結果、「工数がかかりすぎる」「必要以上にコードが複雑になってきた」というような弊害が出てきたら、「原則を守るメリット・デメリット」と「原則を破るメリット・デメリット」を天秤にかける。
  • 原則を破る方のメリットが勝るようであれば、あえて原則を破る。

「ネットに書いてあったから」とか、「偉い人がそう言っているから」ではなく、このように自分の頭で考えて結論を出す訓練をした方がエンジニアとして成長できるんじゃないかなと僕は思います。

投稿2018/01/14 23:43

編集2018/01/14 23:45
jnchito

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tqkqt0

2018/01/15 03:13

ありがとうございます。 >自分の頭で考えて結論を出す訓練をした方がエンジニアとして成長できる おっしゃる通りだと思いました。いつまでも新人じゃないので意識して行こうと思います。
guest

0

RSpec を書いていく上での「良い書き方」であれば、次のリンクが参考になるかもしれません

投稿2018/01/13 09:59

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tqkqt0

2018/01/15 03:11

良いサイトを教えてくださりありがとうございます。参考にします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問