Трудное время, чтобы понять класс обратного вызова Shoudla Matcher

Я занимаюсь разработкой веб-продуктов с последних двух лет, и теперь я решил внести свой вклад с открытым исходным кодом, поэтому я клонировал репозиторий Needa Matcher от Thoughtbot. В настоящее время я пытаюсь понять, как все связано в этом драгоценном камне. Я не смог понять класс CallbackMatcher, говорится в файле. Я понимаю каждую функцию в исходном коде, но как они связаны? Предположим, если я вызову следующий тест с использованием выражения соответствия, как будет вести себя этот класс? В какой последовательности он будет вызывать эти функции для запуска моего теста?

    **should use_around_action(:wrap_in_transaction)**



    def use_around_action(callback)
      CallbackMatcher.new(callback, :around, :action)
    end

    def initialize(method_name, kind, callback_type)
      @method_name = method_name
      @kind = kind
      @callback_type = callback_type
    end

    def matches?(controller)
      puts 'here is matches called'
      @controller = controller
      @controller_class = controller.class

      callbacks.map(&:filter).include?(method_name)
    end

    def failure_message
      "Expected that #{controller_class.name} would have :#{method_name} as a #{kind}_#{callback_type}"
    end

    def failure_message_when_negated
      "Expected that #{controller_class.name} would not have :#{method_name} as a #{kind}_#{callback_type}"
    end

    def description
      "have :#{method_name} as a #{kind}_#{callback_type}"
    end

    protected

    def callbacks
      controller_class._process_action_callbacks.select do |callback|
        callback.kind == kind
      end
    end

    attr_reader :method_name, :controller, :controller_class, :kind,
      :callback_type
  end

0 ответов

Другие вопросы по тегам