16 February 2010

Модульное тестирование, Битрикс и инверсия контроля

Снизошло озарение, как удобно сделать тестирование собственного кода в Битриксе. Для начала определим проблему.

А проблема такая: использую вызовы CIBlockElement::*, мы не имеем возможности подменить этот класс заглушкой. Именно при такой формулировки проблемы решение приходит сразу и в лоб :) Просто инициализировать этот объект, и вызывать метод не у класса, а у объёкта!

Было:

CIBlockElement::GetList(...);

Стало ($iblockElement инициализируется где-то (в тесте, в скприте инициализации) и передаётся при помощт одной из техник инверсий контроля):

$iblockElement::GetList(...);

Вот и вся магия.

No comments: