SakuraWi - BLog

みんなのウェディングの新米エンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

NoMethodError: undefined method `use_transactional_fixtures=' forのエラー処理【Ruby on Rails】


Ruby on Railsで、RSpec導入にあたって、
NoMethodError: undefined method use_transactional_fixtures=' for
や、
bundler: failed to load command: rspec
もしくは
bundler: failed to load command: rspec NameError: uninitialized constant FactoryGirl
と出た時のエラー処理についての記事です。

対処方法

まずは以下のコードが書かれているか、チェックしてみてください。

spec/rails_helper.rbに コードを追加する。

  • require 'factory_girl_rails'を追加。

  • config.include FactoryGirl::Syntax::Methodsを追加。

以下コード例

ENV["RAILS_ENV"] ||= 'test'
require 'spec_helper'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'factory_girl_rails'

---
省略
---
RSpec.configure do |config|
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.include FactoryGirl::Syntax::Methods

---
省略

こちらを加えると解決できるはずです。

エラーが修正されない場合

gem fileの gem 'rspec'のバージョンをチェックする。 自分の場合は、RSpecの入門として、こちらの記事を参考にしてました。
RSpecの入門とその一歩先へ ~RSpec 3バージョン~ - Qiita

この影響で、 Gemfileを

+source 'https://rubygems.org'
+
+gem 'rspec', '3.0.0'

としており、rspecの 3.0.0 がinstallされていました。
こちらを修正するとFactoryGirlとのバージョンが合うみたいで、エラー解決になりました。

その他、参考にされているページ