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
{...}
/**
* 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
былудалено