Метод setMethods устарел при попытке написать модульный тест PHP

#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. Спасибо