Вы не разместили свой код формы, но я подозреваю, что проблема заключается в свободном интерфейсе, который использует метод add() строителя. Если у вас есть несколько вызовов, чтобы добавить(), как это:
$builder
->add('username')
->add('email')
->add(...)
->add(...)
->add('save', 'submit');
Тогда проблема будет происходить после первого дополнения(), потому что не возвращает объект (отсюда и «Обращение к функции-члена оной () на сообщение об ошибке "non-object").
Если вы используете беглый стиль, вам нужно «поезд» за $ строитель сотрудник, так что phpspec/издевательство может возвращать один и тот же объект строитель для последовательных вызовов, чтобы добавить():
$builder->add(Argument::any(), Argument::any())->willReturn($builder);
$this->buildForm($builder, []);
I что формы Symfony 2 могут быть не лучшим кандидатом для тестирования phpspec, так как вы действительно хотите протестировать только общедоступный API для своих классов, а не тестировать собственный код (т. е. фреймворки/сторонние библиотеки).
Тип формы, который вы тестируете, не является фактической формой, которая производится, это больше похоже на «план», используемый для создания формы, когда это необходимо, поэтому я считаю, что сложнее проверить, что форма имеет определенные полям или параметрам и т. д., так как это не вызывается вашим кодом, это происходит автоматически, когда структура форм обрабатывает тип формы.
Работа по созданию реальной формы происходит внутри строителя, который в контексте этой формы тип spec является соавтором, а не реальным объектом-строителем (а также не является вашим кодом для тестирования).