Я бы хотел, чтобы блок тестировал функцию, которая принимает определенный объект в качестве входных данных, обрабатывает его, и когда он закончен, состояние этого объекта должно быть изменено на определенное значение.Утверждение измененного состояния на издеваемом объекте
Как я хочу сделать «реальное» модульное тестирование (как я понимаю), я хочу использовать только класс, предоставляющий функцию обработки, и издеваться над всеми другими используемыми классами. Чтобы выполнить это требование, мне нужно высмеять обрабатываемый объект; но когда это всего лишь макет, у него больше нет реального состояния, которое можно было бы изменить.
Пример псевдокода:
object = createMock('SomeClassName');
object.whenReceives('getState').shouldReturn(0);
Processor.process(object);
assertEquals(expected = 1, actual = object.getState());
Проблема заключается в том, что мне нужно издеваться метод «GetState» подготовить исходное состояние для теста, и поэтому после этого я не могу использовать реальный метод больше. Вы знаете, как я могу это достичь, или как мне изменить дизайн теста?
PS: Я использую PHPUnit и Mockery.
Благодарим за любые советы.