【RSpec】変数を使いたい時はlet
はじめに
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)
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を使うのはどんなときか?(翻訳)
終わりに。
最後まで読んで頂きありがとうございます
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。
Author And Source
この問題について(【RSpec】変数を使いたい時はlet), 我々は、より多くの情報をここで見つけました https://qiita.com/waniwaninowani/items/857dc4e64a158666b32c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .