0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【RSpec】変数を使いたい時はlet

Posted at

#はじめに
RSpecのテストで変数を書くと、rubocopに怒られた。のでその対処について。

#怒られ方

Defining constants inside of specs can cause spurious behavior. It is almost always preferable to use let statements, anonymous class/module definitions, or ? stub_const (convention:Airbnb/SpecConstantAssignment)

letを使えって言われている事はわかる。。

spec の中で定数を定義すると、スプリアスな動作を引き起こす可能性があります。ほとんどの場合、let文、匿名のクラス/モジュール定義、またはstub_const を使用することが望ましいです。

うんうん、スプリアスね。

google翻訳だと、spurious behaviorで、偽りの行動。でした。
要は意図しない変数化になるで、という事かな。

#letを使う
もともとは、RSpecの中で、このように書いていた。

  API_KEY = Rails.application.credentials.api[:API_KEY]

これを、最終的に

  let(:api_key) { Rails.application.credentials.api[:API_KEY] }

この様に変えました。
呼び出すときは、

 headers = {
    'Authorization': "Bearer #{api_key}",
 }

この様に普通に変数として呼び出せます。

#letを使うことのメリット

  • テストに使う変数をletでコードの上の方で記述してしまうことで、itの中の検証部分が見やすく、わかりやすくなる
  • もし、beforeの中に普通に変数として定義すると、テストケースの中で使われない変数があった場合も、生成されてしまうが、letであれば、遅延評価で必要なときだけ呼ばれる。

などなど、、
詳しいことはすべてこちらから教えて頂きました。
RSpecのletを使うのはどんなときか?(翻訳)

###終わりに。
最後まで読んで頂きありがとうございます:bow_tone1:
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?