Stub и конструктор

Всё про тестирование в Yii 2.0
Ответить
Аватара пользователя
Chelobaka
Сообщения: 202
Зарегистрирован: 2018.06.01, 09:54

Stub и конструктор

Сообщение Chelobaka » 2019.11.06, 18:33

Здравствуйте знатоки.
Тестирую класс в котором есть метод который отправляет событие. Этот метод я хочу заглушить.
Я создаю Stub тестируемого объекта. Переопределяю метод отправки события но возникает другая проблема. Я не знаю вызывался ли этот метод вообще или нет.

Получается что мне нужно делать Spy который будете отслеживать кол-во выполненных операций но я нашел решение пока только через:

Код: Выделить всё

// Создать подставной объект для Observer,
        // имитируя только метод update().
        $observer = $this->getMockBuilder(Observer::class)
                         ->setMethods(['update'])
                         ->getMock();

        // Настроить ожидание для метода update(),
        // который должен вызваться только один раз со строкой 'something'
        // в качестве своего параметра.
        $observer->expects($this->once())
                 ->method('update')
                 ->with($this->equalTo('something'));

Но это не решает проблему так как другие методы получаются заглушены и не вызовут данный метод.

Я так понимаю мне нужно делать какой то объект отвечающий за отправку этого евента и мокать его?

Аватара пользователя
Chelobaka
Сообщения: 202
Зарегистрирован: 2018.06.01, 09:54

Re: Stub и конструктор

Сообщение Chelobaka » 2019.11.06, 18:40

То есть мне нужно сделать stub тестируемого класса.
Вызывать метод отправки события через объект. (Переписать существующий класс)
Создать для этого объекта Mock шпион.
Добавить Mock в stub через инверсию зависимостей. (Переписать существующий класс)
Отслеживать выполнение и заглушка отправки одновременно.

Аватара пользователя
Chelobaka
Сообщения: 202
Зарегистрирован: 2018.06.01, 09:54

Re: Stub и конструктор

Сообщение Chelobaka » 2019.11.06, 18:48

Приходи на ум какой то EventSender который и будет мокаться для тестов.

Ответить