Страница 1 из 1

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 2019.11.06, 18:48
Chelobaka
Приходи на ум какой то EventSender который и будет мокаться для тестов.