2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPUnitのバージョンアップ(5.3.4→5.7.5)に伴うgetMock()の修正

Last updated at Posted at 2017-01-19

久しぶりにCakePHP3のバージョンアップをcomposer updateでしたら(3.2.10→3.3.11)、テストにwarningが…。
どうやらCakePHPのバージョンアップというより、PHPUnitのバージョンアップによるものらしい。
PHPUnitは5.3.4から5.7.5にバージョンアップされていました。

PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead

というのがいっぱい出ているので、PHPUnitのドキュメント見てみたら、createMock()getMockBuilder()の記述がありました。

参照:PHPUnit5.7 - テストダブル

というわけで該当箇所を直します。

createMock()を使う

$this->io = $this->getMock('Cake\Console\ConsoleIo');

のようにgetMock()を使っていたところは、

$this->io = $this->createMock('Cake\Console\ConsoleIo');

のようにcreateMock()に変更します。

getMockBuilder()を使う

$controller = $this->getMock('App\Controller\MiscController', ['setMaster']);

のようにメソッドを指定してgetMock()を使っていたところは、

$controller = $this->getMockBuilder('App\Controller\MiscController')
    ->setMethods(['setMaster'])
    ->getMock();

のようにgetMockBuilder()を使うように変更します。

無事にwarning出なくなりました。:clap:

PHPUnitの過去のバージョンのドキュメントをちょっと見てみたら、どうも4からgetMockBuilder()を使うようになってたようですね。
$this->getMock()と書いていたのは3の時代だったようです…:sweat_smile:

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?