質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Q&A

解決済

1回答

1188閲覧

factory_bot.rb:にて、undefined method `configure' for RSpec:Module エラー

pei23

総合スコア0

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

0グッド

0クリップ

投稿2021/08/04 23:56

前提・実現したいこと

Ruby On Railsにて、RSpecを用いたテスト開発を行っています。
テストを一通り終え、「rails s」を行ったところ、下記のエラーメッセージが返されました。
当該エラーを解決する方法について、ご教示頂きたく存じます。

エラーメッセージ

spec/factories/factory_bot.rb:3:in `<main>': undefined method `configure' for RSpec:Module (NoMethodError)

上記エラーが生じている「factory_bot.rb」は、下記の通りです。

factory_bot.rb

ruby

1require 'factory_bot' 2RSpec.configure do |config| 3 config.include FactoryBot::Syntax::Methods 4 config.before :all do 5 FactoryBot.reload 6 end 7end

確認できていること

  1. bundle exec rspec によるテスト実行は正常に行われます。

疑問に感じていること

  1. なぜ、rails sでサーバーを起動したただけなのに、Factory_bot.rbが呼び出されたのか。

→私の理解では、factory_botは、bundle exec rspecでテストを実行した時に呼び出されるものであって、rails sによって、呼びされるものではないと考えておりました。

下記にて、当該事象に関係があるのではないか、と考えるファイルを記載いたします。

.rspec

ruby

1--require rails_helper 2--color 3--format documentation

rails_helper.rb

ruby

1ENV['RAILS_ENV'] = 'test' 2require File.expand_path('../../config/environment', __FILE__) 3abort("The Rails environment is running in production mode!") if Rails.env.production? 4 5require 'simplecov' 6require 'capybara/rspec' 7require 'factory_bot' 8require 'shoulda-matchers' 9require 'vcr' 10require 'spec_helper' 11require 'rspec/rails' 12 13# テスト実行前に未実行のmigrationファイルを検知して実行する 14begin 15 ActiveRecord::Migration.maintain_test_schema! 16rescue ActiveRecord::PendingMigrationError => e 17 puts e.to_s.strip 18 exit 1 19end 20 21# support/config配下のファイルを読み込み 22Dir[Rails.root.join("spec/support/config/*.rb")].each { |f| require f } 23Dir[Rails.root.join("spec/support/helper/*.rb")].each { |f| require f } 24 25RSpec.configure do |config| 26 # テスト全体の前に実行する処理をブロックで記述 27 config.before(:suite) do 28 # データベースをCleanする方法を'transaction'に指定 29 DatabaseCleaner.strategy = :transaction 30 # このタイミングで'transaction'でデータベースをCleanしておく 31 DatabaseCleaner.clean_with(:truncation) 32 end 33 34 # 各exampleの前および後に実行する処理をブロックで記述 35 config.around(:each) do |example| 36 DatabaseCleaner.cleaning do 37 # ここに処理を記述する 38 # ここがexampleの実行タイミング 39 example.run 40 # ここに処理を記述する ## 41 end 42 end 43 44 # focusタグがあればそれだけ実行、なければ全spec実行 45 config.filter_run focus: true 46 config.run_all_when_everything_filtered = true 47 48 # ロードするfixtureのパスを指定 49 config.fixture_path = "#{::Rails.root}/spec/fixtures" 50 51 # ディレクトリ構成によってspec typeを自動判別する設定 52 config.infer_spec_type_from_file_location! 53 54 # spec実行後のbacktrace表示を簡素化 55 config.filter_rails_from_backtrace! 56 57 # RSpecの実行前に1度、DBM 58 config.before(:suite) do 59 DatabaseCleaner.clean 60 end 61 62 # rspecでいうexample、turnipでいうシナリオが終わるごとにDBの初期化 63 config.before(:each) do 64 DatabaseCleaner.clean 65 end 66 67 # 最後に1度、実行 68 config.after(:suite) do 69 DatabaseCleaner.clean 70 end 71end

###spec_helper.rb

ruby

1require 'simplecov' 2 3SimpleCov.start 'rails' 4 5RSpec.configure do |config| 6 # focusタグがあればそれだけ実行、なければ全spec実行 7 config.filter_run focus: true 8 config.run_all_when_everything_filtered = true 9 10 # specをランダム実行 11 config.order = :random 12 13end

補足情報(FW/ツールのバージョンなど)

  • Rails 6.1.3.1
  • RSpec 3.10
  • factory_bot_rails 6.2.0

まとめ

  1. 上記エラーを解決する方法やヒントなど頂きたく存じます

また、足りない情報やその他必要な情報がありましたら、ご教示いただければ幸いです。

至らない箇所が諸処あるかと存じますが、何卒よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

factory_bot.rbが、rspc/supportディレクトリに無かったためでした。

投稿2021/08/07 07:30

pei23

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問