#php #testing #phpunit
#php #тестирование #phpunit
Вопрос:
Я хочу создать макет для замены ресурса:
$gateway = $this->getMockBuilder('PaymentGateway')
->setMethods(['transfer'])
->getMock();
Я получил это предупреждение:
Метод setMethods устарел
Как я могу устранить это устаревание?
Ответ №1:
Отныне мы должны использовать либо onlyMethods()
(что было бы ближайшим эквивалентом setMethods()
и addMethods()
:
$gateway = $this->getMockBuilder('PaymentGateway')
->onlyMethods(['transfer'])
->getMock();
Это объясняется в PR (ссылка на метод напрямую из документа PHP, как показано здесь).
Комментарии:
1. спасибо за ваш ответ: я заменил setMethods на onlyMethods и получил предупреждение о том, что класс PaymentGateway не существует!
2. Это другая проблема. Не связано с исходным вопросом. Вероятно, вам следует передать полное имя класса. Или
PaymentGateway::class
3. когда я использую addMethods, мой тест в порядке, и я не получаю предупреждений, я понимаю, что я должен изменить свой код для работы с onlyMethods. Спасибо