テストの実行時にレールをロードしないように、テスト スイートの一部をリファクタリングしました。以下のコードは、Rails の選択部分のみをロードするテスト ファイルの例です。また、「プロジェクト」クラスを偽装します。私の問題は、この偽のプロジェクト クラスが通常のプロジェクト クラスをオーバーライドしてしまい、そのプロジェクト クラスを含む他のすべてのテストが失敗することです。
このテスト ファイルの実行後にプロジェクト クラスのオーバーライドを解除するにはどうすればよいですか?
require 'active_model'
require 'active_model/validations'
require 'active_record/callbacks'
require 'active_support/core_ext/string'
class Project
include ActiveModel::Validations
include ActiveRecord::Callbacks
def initialize(attributes = {})
@general_media = attributes[:general_media]
end
attr_accessor :general_media
end
require_relative '../../../app/models/project/media.rb'
更新: Project が初期化されていない定数であるというエラーが発生することを除いて、これは私が必要とするものに近いと思います。このテスト クラスのインスタンス化が間違っているに違いありません。
require 'active_model'
require 'active_model/validations'
require 'active_record/callbacks'
require 'active_support/core_ext/string' #used for '.blank?' method
require_relative '../../../app/models/project/media.rb'
describe Project::Media do
before(:all) do
class Project
include ActiveModel::Validations
include ActiveRecord::Callbacks
def initialize(attributes = {})
@general_media = attributes[:general_media]
end
attr_accessor :general_media
end
end
after(:all) { Object.send(:remove_const, :Project) }
#then all the tests