Skip to content

Latest commit

 

History

History
20 lines (16 loc) · 1.35 KB

README.md

File metadata and controls

20 lines (16 loc) · 1.35 KB

Шпиониране

Създайте клас Spy, чийто конструктор приема като аргумент инстанция на какъвто и да е клас и видимо се държи като въпросната инстанция – отговаря на същите методи, като подадената инстанция, когато тези методи бъдат извикани връщат същите стойности, каквито биха върнали, ако бяха извикани директно върху инстанцията и тъй нататък. Разликата е, че инстанциите на Spy имат метод Spy#calls, който връща масив от имената на всички извикани върху него методи, на които съответства метод в подадената инстанция.

Ако подадената инстанция не отговаря на желания метод, или пък той не е public метод, то трябва да се хвърли изключение Spy::Error, което да е наследник на NoMethodError

Пример:

s = Spy.new 'Spy'
s.length         # => 3
s.calls          # => [:length]
s.unknown_method # хвърля Spy::Error