50
34

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 5 years have passed since last update.

Rspec letとcreateが表すもの。

Last updated at Posted at 2018-11-12

##はじめに

product_controller.rspec.rb
let(:product) { create(:product) }

というコードを見て、「何を表しているんだ・・・?」と疑問に思い

今回はletとcreateの関してまとめていきたいと思います!

##結論

まず、先程のコードは省略形になります。

このコードを省略する前のコードに直してみると・・・

product_controller.rspec.rb
@product =  FactoryBot.create(:product) 

というコードになります。

つまり、let(:product)はインスタンス変数である@productの代わりだと言えます。

対して、createはFactoryBotが省略されています。

確かに一回一回、FactoryBot.createと打つのは面倒くさいですよね。

ただ残念ながらデフォルトの状態では、FactoryBotを省略することは出来なく、

以下のコードを追加する必要があります。

rails_helper.rb
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end

##Solidusを利用しているケース

ちなみにSolidusを利用している場合では、以下のコードを追加することで省略が可能になるだけでなく、

ダミーデーターを自分で作らなくてもいいんです。

rails_helper.rb
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

50
34
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
50
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?