Где найти исчерпывающее руководство по переписыванию моих тестовых классов перед лицом устаревшей функции setMethods ()? - PullRequest
0 голосов
/ 24 октября 2019

MockBuilder::setMethods() метод устарел в 8.3, но примеры в документации все еще используют его, и я не могу найти полное руководство по миграции нигде. Существует ли он?

Из уважения к вашему времени, потраченному на написание ответа: ответы, сводящиеся к "просто продолжайте использовать setMethods(), это все еще работает", не будут приняты.

1 Ответ

1 голос
/ 24 октября 2019

setMethods() устарела с этого времени PR

В данный момент документация устарела, но я думаю, что она будет исправлена ​​в кратчайшие сроки. Чтобы ответить на ваш вопрос о setMethods, он был заменен двумя новыми функциями

  • только Методы
 /**
 * Specifies the subset of methods to mock, requiring each to exist in the class
 *
 * @param string[] $methods
 *
 * @throws RuntimeException
 */
 public function onlyMethods(array $methods): self
 {...}
  • addMethods
/**
* Specifies methods that don't exist in the class which you want to mock
*
* @param string[] $methods
*
* @throws RuntimeException
*/
public function addMethods(array $methods): self
{...}

Пример

Старый код мог бы выглядеть так

$merchant = $this->getMockBuilder('\Fake\FakeMerchant')
    ->setMethods(['getLegalEntity'])
    ->getMock();

, который теперь должен быть таким

$merchant = $this->getMockBuilder('\Fake\FakeMerchant')
    ->addMethods(['getLegalEntity'])
    ->getMock();

Дополнительная информация

Я не нашел исчерпывающего руководства по миграции, но так как мне недавно пришлось перейти со старого phpunit 4.x на новый phpunit 8.4, вот советы, которым вы можете следовать.

  • PHPUnit_Framework_TestCase заменено на PHPUnit\Framework\TestCase
  • PHPUnit_Framework_MockObject_MockObject заменено на PHPUnit\Framework\MockObject\MockObject
  • ->getMock удалено. Таким образом, альтернатива может быть ->createMock(), createPartialMock или ->getMockBuilder()->getMock()
  • Функции типа setUp setUpBeforeClass, tearDown и т. Д. Теперь необходимо определить ::void тип возвращаемого значения
  • mockObject->setMethods устарела и должна быть заменена на onlyMethod для метода, который уже существует, и addMethods для методов, которые существуют в классе
  • @expectedException из docblock устарела, а $this->setExpectedException былудалено
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...