Ruby on Rails開発のインターン (Day 27)

こんにちは、皆さん!

7週目がやってきた。インターンも残りわずかだ。もうあと2週間だから時間も限られている。今やっているマップテストをどこまでやるべきなのかもよくわからない。思い返すと、このインターンはすごくよかったし、思っていたよりずっと短かった気がする。時間がたつのって本当に早いね(笑)


  • トピック:
  1. テストで使われる変数をあらかじめ定義する


  • 疑問:


  • 問題:


  • 学習した内容:
  1. テストが始まる前に変数をあらかじめ定義する


  • 今後やってみたいこと:


  • リソース;


テストで使われる変数をあらかじめ定義する

すべてのテストで使われるし、コードがきれいに見えるからあらかじめ変数を定義するのはすごく役に立つ。

テストでこの機能を使おうと思ったのは、多くのシチュエーションがあり、それぞれに対するマーカーが必要だし、いくつかのテストで同じものを使いたいと思ったからだ。

少し探してみたら、下記のようなテンプレが出てきた

before(:each) do
  # your code here
end

それで、僕は下記のを試した

before(:each) do
  place = Place.find(1)
end

その後、テスト内でその変数を使おうとしたら、下記のようなエラーが返ってきた。

NameError:
       undefined local variable or method `place' for #<RSpec::ExampleGroups::TheSigninProcess:0x0055ddbc033078>

スペルミスはなかったのですごくおかしな感じがしたのだが、後になって、インスタンス変数しかこのような役割を果たすことはできないとわかった。つまり、あらかじめ定義しようとしている変数の前に@をつける必要があったのだ。よって、下記のが正しい。

before(:each) do
  @place = Place.find(1)
end

これで僕の場合はうまくいき、同じ変数の定義を避け、コードがずっとよく見えるようになった。

まとめ

それぞれのテストの前に変数を定義する方法について学んだ。この知識があれば、これからはもっと良いテストが書ける気がする。しかしながら、どうやったらもっと効率よく変数を定義することができるのかとまだ考えているところだ。一つのマーカーを作るのに、その中に入れるパラメータが多すぎて、一つ一回ずつでもかなりの手間だなと思った。何かいい方法を見つけれるといいな。


ご精読ありがとうございました。では、また次回まで✌



Day 28はこちら↓↓
programming-shop.hatenablog.com


Day 26はこちら↓↓
programming-shop.hatenablog.com