LoginSignup
5
6

More than 3 years have passed since last update.

RSpecで「undefined method `create'」というエラーが出た

Posted at

Everyday Rails – RSpecによるRailsテスト入門でコントローラーにおけるRSpecのテストを学んでいたときに、自分にとって新しい学びがあったのでアウトプットしたいと思います。

問題

本日もRSpecについて勉強していたところ、

reviews_spec.rb
 review = FactoryBot.create(:review)

という記述を

reviews_spec.rb
  review = create(:review)

という省略系にできることを知り、自分もやってみました。

しかし、「bundle exec rspec」を実行した後、以下のようなエラーが出てしまいました。

ターミナル
Failure/Error: review = create(:review)

     NoMethodError:
       undefined method `create' for……(以下省略)

「セットアップがうまく行ってなかったのかなぁ…」
と思ったので、伊藤淳一さんのブログ(リンクはこちら)を参考にさせていただきながらRailsのセットアップを見直したり、他にもいろいろ調べていました。

解決策

その結果、rails_helperに次のような記述が必要だったことを知りました。
参考にさせていただいた記事はこちら

rails_helper.rb
 #一番下に記述してください

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

この記述が抜けていたために、今回のようなエラーが出ていたようです。

これにより、冒頭にあった

reviews_spec.rb
 review = FactoryBot.create(:review)

という記述を

reviews_spec.rb
  review = create(:review)

という省略系にすることができました。

今回はcreateメソッドでしたが、buildメソッドで省略系を書きたい時も同様です。

5
6
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
5
6