Rspe c Пропускается при выполнении всех тестов, но не выполняется при запуске отдельных тестов - PullRequest
0 голосов
/ 05 февраля 2020

Я заметил нечто странное в моем тестировании 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
...