Посчитайте, сколько методов в методе? - PullRequest
0 голосов
/ 19 октября 2011

Итак, если есть два метода:

def foo
   method1
   method2
end

Как можно проверить, все ли эти «method1 / method2» были выполнены в самом методе? Как может подсчитываться количество раз, когда метод вызывается? Код также должен быть внутри method1 или method2, чтобы проверить это.

1 Ответ

0 голосов
/ 19 октября 2011

Вероятно, это легко сделать другим способом, но этот способ кажется чистым и модульным.

Создайте прокси-класс с именем method_counter, который удаляет его собственные методы и определяет missing_method, get_method_counts и конструктор.Вы можете увидеть примеры того, как это сделать, здесь: http://www.binarylogic.com/2009/08/07/how-to-create-a-proxy-class-in-ruby/

Теперь конструктор берет любой другой объект и сохраняет его внутри.Метод get метода count возвращает хэш метода methodname => count.

Отсутствующий метод вызывается ruby ​​всякий раз, когда кто-то вызывает метод для прокси-объекта, который не существует ... И затем вы должны реализовать его длявызовите тот же метод для содержащегося объекта (переданного в конструкторе) после обновления хэша счетчика методов.

Эта реализация чиста, потому что вы не коснулись кода целевых объектов, и вызывающему коду нужно будет только изменить1 строка (конструктор целевого объекта для создания прокси).

...