Трудное время, чтобы понять класс обратного вызова 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