Я заметил нечто странное в моем тестировании rspe c.
Когда я запускаю все свои тесты rspe c, мои тесты, основанные на моем операторе require "plan_access_control"
, проходят, например, AController, BController и CController все проходят.
Однако, если я запускаю BController_spe c .rb отдельно, он завершается неудачно. Как заставить мои тесты работать изолированно друг от друга, чтобы они не сработали? Я предполагаю, что после загрузки require
он загружается для всех тестов, но этого не должно происходить.
# controllers/concerns/access_controllable.rb
module AccessControllable
extend ActiveSupport::Concern
require "plan_access_control"
def validation_object
@validation_object ||= PlanAccessControl::Validations.new(counts: 1)
end
end
#lib/plan_access_control.rb
module PlanAccessControl
autoload :Validations, "plan_access_control/validations"
end
# lib/plan_access_control/validations.rb
module PlanAccessControl
class Validations
def initialize(counts:)
self.counts = counts
end
end
end
# controller/a_controller.rb
class AController < ApplicationController
include AccessControllable
def new
@a = PlanAccessControl::Validations.new(counts: 1)
end
end
# controller/b_controller.rb
class BController < ApplicationController
def new
@b = PlanAccessControl::Validations.new(counts: 1)
end
end
# controller/c_controller.rb
class CController < ApplicationController
include AccessControllable
def new
@c = PlanAccessControl::Validations.new(counts: 1)
end
end