##はじめに
let(:product) { create(:product) }
というコードを見て、「何を表しているんだ・・・?」と疑問に思い
今回はletとcreateの関してまとめていきたいと思います!
##結論
まず、先程のコードは省略形になります。
このコードを省略する前のコードに直してみると・・・
@product = FactoryBot.create(:product)
というコードになります。
つまり、let(:product)はインスタンス変数である@productの代わりだと言えます。
対して、createはFactoryBotが省略されています。
確かに一回一回、FactoryBot.createと打つのは面倒くさいですよね。
ただ残念ながらデフォルトの状態では、FactoryBotを省略することは出来なく、
以下のコードを追加する必要があります。
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
##Solidusを利用しているケース
ちなみにSolidusを利用している場合では、以下のコードを追加することで省略が可能になるだけでなく、
ダミーデーターを自分で作らなくてもいいんです。
require 'spree/testing_support/factories'
というのも、Solidusにはデフォルトの状態でFactoryBotのダミーデータが自動生成されているからです。
こちらのコードをrails_helperに追加することで簡単にダミーデータを呼び出すことができるようになるので、良かったら試してみて下さい!
【追記】
こちらでSolidus内にデフォルトで作成されているファクトリを確認することが出来ます。
solidus/core/lib/spree/testing_support/factories
【参考記事】
https://qiita.com/yuskamiya/items/32f383cb8d18ceb751d7#%E3%83%86%E3%82%B9%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
https://qiita.com/Ushinji/items/522ed01c9c14b680222c